Ich möchte SSH-Benutzern ein Banner (Begrüßungsnachricht) mit einer bestimmten Begrüßungsnachricht für jeden Benutzer anzeigen.
Ich möchte SSH-Benutzern ein Banner (Begrüßungsnachricht) mit einer bestimmten Begrüßungsnachricht für jeden Benutzer anzeigen.
Antworten:
Sie haben nicht angegeben, welchen SSH-Server Sie verwenden. Ich gehe von OpenSSH aus.
Beachten Sie, dass das SSH-Banner und die MOTD zwei verschiedene Dinge sind.
Während sie in einem SSH-Terminal kaum zu unterscheiden sind, weisen sie ein anderes Verhalten auf, z. B. in einem SFTP-Client.
Die MOTD ist nur ein Text, der auf einem interaktiven Terminal gedruckt wird. So wird (und kann) es beispielsweise nicht an SFTP-Clients gesendet (dazu später mehr).
Die MOTD ist /etc/motd
in OpenSSH fest codiert . Sie können es nur global mit der PrintMotd
Direktive ein- und ausschalten .
Auf einigen Linux-Systemen PrintMotd
ist die Option jedoch immer deaktiviert und die MOTD wird stattdessen vom PAM-Stapel gedruckt (mithilfe des pam_motd
Moduls). In diesem Fall können Sie es über /etc/pam.d/sshd
deaktivieren oder einen benutzerdefinierten motd=
Pfad als Modulparameter angeben .
Das SSH-Banner ist eine spezielle SSH 2.0-Funktion, die in einem bestimmten SSH-Paket (SSH2_MSG_USERAUTH_BANNER) gesendet wird.
Selbst Nicht-Terminal-Clients wie SFTP-Clients können dies verarbeiten und dem Benutzer anzeigen. Sehen Sie sich beispielsweise an, wie das Banner im WinSCP SFTP / SCP-Client angezeigt wird .
Das SSH - Banner ist konfigurierbar pro Benutzer (oder eine Gruppe oder anderen Kriterien) in den sshd_config
mit der Banner
und den Match
Richtlinien :
Match User username1
Banner /etc/banner_user1
Match User username2
Banner /etc/banner_user2
Siehe auch SSH-Banner für bestimmte Benutzer oder IPS deaktivieren .
Natürlich können Sie auch eine benutzerdefinierte Implementierung für die Nachricht / das Banner verwenden. Drucken Sie einfach eine Nachricht aus, die mit Ihrer benutzerdefinierten Logik aus einem globalen Profilskript ausgewählt wurde.
Wie bei der MOTD funktioniert dies nicht bei nicht interaktiven Sitzungen (SFTP und Ähnliches).
Noch wichtiger ist, dass dies nicht nur nicht funktioniert, sondern auch sichergestellt werden muss, dass die Nachricht nur für ein interaktives Terminal gedruckt wird. Was OpenSSH automatisch für die /etc/motd
. Verwenden Sie entweder ein globales Profilskript, das nur für ein interaktives Terminal ausgeführt wird, oder drucken Sie die Nachricht abhängig vom Wert der TERM
Umgebungsvariablen.
Wenn Sie die Nachricht für eine nicht interaktive Sitzung drucken, unterbrechen Sie jeden Client, der ein striktes Protokoll verwendet, wie z. B. das SFTP oder das SCP, da der Client versucht, Ihre Textnachricht als Protokollnachricht zu interpretieren, was fehlschlägt.
(Ich bin der Autor von WinSCP)
Sie können die "$HOME/.ssh/rc"
Datei auch für die Archivierung verwenden, was Sie tun möchten
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
Sie können also für jeden Benutzer einen ssh rc haben.
groups|awk '{print $1}'
cat /etc/motd.${PGROUP} Vor dem Hinzufügen dieser Zeile erstelle ich eine Bannerdatei für jeden Benutzer im Verzeichnis / etc. und Datei wie motd.root und motd.alex und diese Arbeit für mich.