
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 にメッセージが表示されます。