
Я хочу, чтобы содержимое файла печаталось при входе по ssh в систему unix, если этот файл существует. MOTD уже печатается, а также баннер, установленный в sshd_config
. Я хочу также распечатать другой файл. Как мне это сделать? Я пытаюсь использовать файл rc, но он не работает. Могу ли я задать содержимое файла переменной в среде и распечатать его через rc, что вы посоветуете?
решение1
Вы можете использоватьForceCommand(опция конфигурации sshd)
Принудительно выполняет команду, указанную ForceCommand, игнорируя любую команду, предоставленную клиентом, и ~/.ssh/rc, если таковой имеется. Команда вызывается с помощью оболочки входа пользователя с опцией -c. Это применимо к выполнению оболочки, команды или подсистемы. Это наиболее полезно внутри блока Match. Команда, изначально предоставленная клиентом, доступна в переменной среды SSH_ORIGINAL_COMMAND. Указание команды ''internal-sftp'' принудительно задействует внутрипроцессный сервер sftp, которому не требуются файлы поддержки при использовании с ChrootDirectory. Значение по умолчанию - ``none''.
Просто укажите ссылку на скрипт-оболочку, который отобразит ваше сообщение, а затем запустите оболочку.
Пример sshd_config (OpenSSH_7.2p2):
Port 22
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
UsePrivilegeSeparation yes
KeyRegenerationInterval 3600
ServerKeyBits 1024
SyslogFacility AUTH
LogLevel INFO
LoginGraceTime 120
PermitRootLogin prohibit-password
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM yes
ForceCommand /usr/local/bin/ssh-wrapper
/usr/local/bin/ssh-обертка
#!/bin/sh
[ -r "/etc/ssh_banner" ] && cat /etc/ssh_banner
CMD=${SSH_ORIGINAL_COMMAND:+-c $SSH_ORIGINAL_COMMAND}
exec $SHELL -l $CMD
Это отобразит сообщение в /etc/ssh_banner, если этот файл там есть.