Inhalt der Datei nach einer SSH-initiierten Anmeldesitzung drucken?

Inhalt der Datei nach einer SSH-initiierten Anmeldesitzung drucken?

Ich möchte, dass der Inhalt einer Datei beim SSH-Login in ein Unix-System gedruckt wird, sofern diese Datei existiert. MOTD druckt bereits, ebenso wie ein in festgelegtes Banner sshd_config. Ich möchte auch eine andere Datei drucken. Wie gehe ich dabei vor? Ich versuche, die RC-Datei zu verwenden, aber es funktioniert nicht. Kann ich den Inhalt der Datei in einer Variable in der Umgebung festlegen und sie über RC drucken? Was würden Sie vorschlagen?

Antwort1

Sie könnenKraftbefehl(eine SSHD-Konfigurationsoption)

Erzwingt die Ausführung des durch ForceCommand angegebenen Befehls und ignoriert dabei alle vom Client bereitgestellten Befehle und ~/.ssh/rc, falls vorhanden. Der Befehl wird aufgerufen, indem die Anmeldeshell des Benutzers mit der Option -c verwendet wird. Dies gilt für die Ausführung von Shells, Befehlen oder Subsystemen. Es ist besonders nützlich innerhalb eines Match-Blocks. Der ursprünglich vom Client bereitgestellte Befehl ist in der Umgebungsvariable SSH_ORIGINAL_COMMAND verfügbar. Die Angabe eines Befehls von „internal-sftp“ erzwingt die Verwendung eines In-Process-SFTP-Servers, der bei Verwendung mit ChrootDirectory keine Supportdateien benötigt. Der Standardwert ist „none“.

Richten Sie es einfach auf das Wrapper-Skript, das Ihre Nachricht anzeigt, und führen Sie dann die Shell aus.

Beispiel 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-wrapper

#!/bin/sh
[ -r "/etc/ssh_banner" ] && cat /etc/ssh_banner
CMD=${SSH_ORIGINAL_COMMAND:+-c $SSH_ORIGINAL_COMMAND} 
exec $SHELL -l $CMD

Dadurch wird eine Meldung in /etc/ssh_banner angezeigt, wenn diese Datei dort vorhanden ist.

verwandte Informationen