ssh で開始されたログイン セッション後にファイルの内容を印刷しますか?

ssh で開始されたログイン セッション後にファイルの内容を印刷しますか?

UNIX システムへの ssh ログイン時に、ファイルが存在する場合はそのファイルの内容が印刷されるようにしたいです。MOTD は既に印刷され、バナーも印刷されますsshd_config。別のファイルも印刷したいです。どうすればよいでしょうか。rc ファイルを使用しようとしていますが、うまくいきません。ファイルの内容を環境内の変数に設定し、rc 経由で印刷することはできますか。どのようにすればよいでしょうか。

答え1

使用できますフォースコマンド(sshd 設定オプション)

ForceCommand で指定されたコマンドを強制的に実行します。クライアントから提供されたコマンドや ~/.ssh/rc がある場合は無視します。コマンドは、-c オプションを指定したユーザーのログイン シェルを使用して呼び出されます。これは、シェル、コマンド、またはサブシステムの実行に適用されます。これは、Match ブロック内で最も役立ちます。クライアントによって最初に提供されたコマンドは、SSH_ORIGINAL_COMMAND 環境変数で使用できます。コマンドに ''internal-sftp'' を指定すると、ChrootDirectory で使用するときにサポート ファイルを必要としないインプロセス sftp サーバーの使用が強制されます。デフォルトは ``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 にメッセージが表示されます。

関連情報