распечатать содержимое файла после сеанса входа, инициированного через ssh?

распечатать содержимое файла после сеанса входа, инициированного через ssh?

Я хочу, чтобы содержимое файла печаталось при входе по 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, если этот файл там есть.

Связанный контент