Gibt es eine Möglichkeit, die SSH-Client-IP-Adresse des Benutzers in einem Bash-Skript abzurufen?

Gibt es eine Möglichkeit, die SSH-Client-IP-Adresse des Benutzers in einem Bash-Skript abzurufen?

Ich habe zwei Benutzer, die aufgrund einer Anwendungsbeschränkung dieselben Anmeldedaten verwenden müssen.

Diese Benutzer haben völlig unterschiedliche Meinungen darüber, wie eine Shell-Eingabeaufforderung aussehen sollte. Einer von ihnen besteht sogar darauf, die Farbpalette zu ändern. Dies hat zu einem .bashrc PS1-Streit geführt. Ich habe ihnen Skripte gegeben, mit denen sie ihre eigenen Einstellungen festlegen können, aber ... sagen wir einfach, es ist kompliziert.

Glücklicherweise stellen beide von Standorten mit bekannten IP-Adressen eine Verbindung her. Gibt es eine Möglichkeit, die Remote-IP-Adresse des Benutzers in eine Bedingung einzubinden und beiden so das zu geben, was sie wollen, ohne dass sie zusätzliche Schritte unternehmen müssen? Sie stellen die Verbindung über SSH her.

Antwort1

Aus dem Handbuch des OpenSSH-SSH-Clients ( man 1 ssh):

ENVIRONMENT
sshsetzt normalerweise die folgenden Umgebungsvariablen:

[…]

SSH_CONNECTIONIdentifiziert die Client- und Server-Enden der Verbindung. Die Variable enthält vier durch Leerzeichen getrennte Werte: Client-IP-Adresse, Client-Portnummer, Server-IP-Adresse und Server-Portnummer.

[…]

Sie .bashrcsollten Folgendes tun:

case "${SSH_CONNECTION%% *}" in
1.2.3.4|1.2.3.5 )
   PS1=…
   ;;
2.2.7.* )
   PS1=…
   ;;
# add support for more users if needed
esac

oder wie

if [ "${SSH_CONNECTION%% *}" = "1.2.3.4" ]; then
   PS1=…
else
   PS1=…
fi

Antwort2

Wenn die Anmeldung per SSH unter Verwendung von Schlüsseln erfolgt, können Sie Folgendes tun:

myip=`grep 'Accepted publickey for bozo' /var/log/auth.log | tail -1 | awk '{print $11}'`

und vergleichen Sie dann $myip. Wenn sie Passwörter verwenden, ändern Sie sie entsprechend. (Ändern Sie sie auch, wenn ihr Benutzername aus irgendeinem Grund nicht bozo lautet.)

(Dies sollte für Ubuntu und andere Debian-Varianten funktionieren; Speicherort/Name und genaues Format der Authentifizierungsprotokolldatei können bei anderen Varianten abweichen.)

verwandte Informationen