SSHユーザーにバナー(ウェルカムメッセージ)を表示し、各ユーザーに特定のウェルカムメッセージを表示したい。
SSHユーザーにバナー(ウェルカムメッセージ)を表示し、各ユーザーに特定のウェルカムメッセージを表示したい。
回答:
指定していない、使用しているSSHサーバー。OpenSSHを想定しています。
SSHバナーとMOTDは2つの異なるものであることに注意してください。
SSHターミナルではほとんど区別できませんが、たとえばSFTPクライアントでは異なる動作をします。
MOTDは、対話型端末に印刷された単なるテキストです。そのため、たとえば、SFTPクライアントに送信されません(また、送信できません)(後で詳しく説明します)。
MOTDは/etc/motd
OpenSSHにハードコードされています。PrintMotd
ディレクティブを使用して、グローバルにのみオン/オフを切り替えることができます。
ただし、一部のLinuxシステムでは、PrintMotd
常にオフになっており、MOTDは代わりにPAMスタックによって出力されます(pam_motd
モジュールを使用)。この場合、を介してオフにする/etc/pam.d/sshd
かmotd=
、モジュールパラメータとしてカスタムパスを指定できます。
SSHバナーは、特定のSSHパケット(SSH2_MSG_USERAUTH_BANNER)で送信される特別なSSH 2.0機能です。
そのため、SFTPクライアントなどの非ターミナルクライアントでも処理して、ユーザーに表示できます。たとえば、WinSCP SFTP / SCPクライアントでバナーがどのように表示されるかを確認してください。
SSHバナーはsshd_config
、Banner
およびMatch
ディレクティブを使用して、ユーザー(またはグループまたはその他の基準)ごとに構成できます。
Match User username1
Banner /etc/banner_user1
Match User username2
Banner /etc/banner_user2
特定のユーザーまたはipsのsshバナーを無効にするもご覧ください。
もちろん、メッセージ/バナーのカスタム実装を使用することもできます。グローバルプロファイルスクリプトからカスタムロジックを使用して選択したメッセージを単に印刷します。
MOTDと同様に、これは非対話型セッション(SFTPなど)では機能しません。
さらに重要なことは、それが機能しないだけでなく、対話式端末のみのメッセージを印刷することを確認する必要があります。OpenSSHが自動的に行うこと/etc/motd
。対話式端末のみで実行されるグローバルプロファイルスクリプトを使用するか、TERM
環境変数の値に基づいて条件付きでメッセージを出力します。
非対話型セッションのメッセージを印刷すると、SFTPやSCPなどの厳格なプロトコルを使用しているクライアントが壊れます。クライアントはテキストメッセージをプロトコルメッセージとして解釈しようとするため、失敗します。
WinSCP SFTP / SCPクライアントのドキュメントのそのような問題の例の説明を参照してください。
(私はWinSCPの著者です)
あなたがし"$HOME/.ssh/rc"
たいことをアーカイブするためにファイルを使用することもできます
echo "echo Hello World" > /home/pluto/.ssh/rc
ssh pluto@localhost
Last login: Thu Dec 18 08:46:16 2014 from localhost.localdomain
Hello World
したがって、すべてのユーザーに対して1つのssh rcを使用できます。
groups|awk '{print $1}'
cat /etc/motd.${PGROUP}この行を追加する前に、/ etcディレクトリの下に各ユーザーのバナーファイルを作成します。motd.rootやmotd.alexのようなファイルを作成すると、これでうまくいきます。