ユーザーごとのSSH MOTD


17

SSHユーザーにバナー(ウェルカムメッセージ)を表示し、各ユーザーに特定のウェルカムメッセージを表示したい。

回答:


38

指定していない、使用しているSSHサーバー。OpenSSHを想定しています。

SSHバナーとMOTDは2つの異なるものであることに注意してください。

SSHターミナルではほとんど区別できませんが、たとえばSFTPクライアントでは異なる動作をします。


MOTDは、対話型端末に印刷された単なるテキストです。そのため、たとえば、SFTPクライアントに送信されません(また、送信できません)(後で詳しく説明します)。

MOTDは/etc/motdOpenSSHにハードコードされています。PrintMotdディレクティブを使用して、グローバルにのみオン/オフを切り替えることができます。

ただし、一部のLinuxシステムでは、PrintMotd常にオフになっており、MOTDは代わりにPAMスタックによって出力されます(pam_motdモジュールを使用)。この場合、を介してオフにする/etc/pam.d/sshdmotd=、モジュールパラメータとしてカスタムパスを指定できます。


SSHバナーは、特定のSSHパケット(SSH2_MSG_USERAUTH_BANNER)で送信される特別なSSH 2.0機能です。

そのため、SFTPクライアントなどの非ターミナルクライアントでも処理して、ユーザーに表示できます。たとえば、WinSCP SFTP / SCPクライアントバナーがどのように表示されるかを確認しください。

SSHバナーはsshd_configBannerおよび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の著者です)


こんにちは、返信ありがとうございます。間違っている場合は解決してください。この行を/ etc / profileファイルに追加します。PGROUP = groups|awk '{print $1}'cat /etc/motd.${PGROUP}この行を追加する前に、/ etcディレクトリの下に各ユーザーのバナーファイルを作成します。motd.rootやmotd.alexのようなファイルを作成すると、これでうまくいきます。
user260277 14

それも行う必要があります。私の答えによる場合を除き、これは対話型端末でのみ機能します。SFTPなどでは機能しません。
マーティンPrikryl 14

インタラクティブな端末手段?
user260277 14

これは、人間が対話する端末です(SFTPセッション、SCPセッション、またはバッチタスクのリモート実行に使用される非対話型端末とは
対照的

バナーのカスタム実装に関するいくつかのトリッキーな詳細を含めました。
マーティンPrikryl 14

9

あなたがし"$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を使用できます。


こんにちは、私はこれを試みますが、エラーメッセージ.ssh / rc:1:.ssh / rc:welcom:not foundが表示されます。
user260277 14

私のせいで、タイプミスをしました。通常のbashスクリプトのようにエコーが必要です
c4f4t0r 14

「世界」もタイプミスです:)
サイモン14

「stty:standard input:Inappropriate ioctl for device」と表示されます。
追って通知があるまで一時停止します。

.ssh / rcには何がありますか?
c4f4t0r 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.