Ich verbinde mich mit einer Linux-Maschine (Centos 6.4), die Putty verwendet. Wie finde ich die aktuelle SSH-Verbindungsversion (SSH1 oder SSH2)?
Ich verbinde mich mit einer Linux-Maschine (Centos 6.4), die Putty verwendet. Wie finde ich die aktuelle SSH-Verbindungsversion (SSH1 oder SSH2)?
Antworten:
Ich weiß, dass dies eine alte Frage ist, aber da ich darauf gestoßen bin, konnte ich nicht widerstehen, einen alternativen Weg zu veröffentlichen.
Wie von cstamas vorgeschlagen, können ssh -v localhost
Sie im ausführlichen Modus einfach ssh to your self 127.0.0.1 verwenden, wodurch eine Debug-Meldung über den Fortschritt angezeigt wird. Ja, durch diesen Vorgang können Sie den oberen Rand der Kommunikation einsehen und die aktuell ausgeführte SSH-Version abrufen.
Aber wenn Sie die ssh man
Seite lesen , werden Sie die -V
Option auf ssh nützlicher finden. Die SSH-Manpage rausgenommen :
-V Versionsnummer anzeigen und beenden.
-v Ausführlicher Modus. Bewirkt, dass ssh Debugging-Meldungen über den Fortschritt ausgibt. Dies ist hilfreich beim Debuggen von Verbindungs-, Authentifizierungs- und Konfigurationsproblemen. Mehrere -v-Optionen erhöhen die Ausführlichkeit. Das Maximum ist 3.
Also denke ich, es wäre besser, einfach ssh -V
etwas zu tun und etwas Ähnliches zu bekommen wie:
> ssh -V
OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013
Hoffe das hilft.
Kitt Aktivieren Sie in Sitzung, Protokollierung das Optionsfeld "SSH-Pakete und Rohdaten". Wählen Sie die Protokolldatei als putty.log an einem Ort Ihrer Wahl aus. Stellen Sie die Verbindung her. Das solltest du sehen:
Event Log: Server version: SSH-2.0-OpenSSH_5.3
Event Log: Using SSH protocol version 2
Im Folgenden erfahren Sie, was SSH-2.0 bedeutet.
Andere Methoden Sie können auch versuchen, den Telnet-Client zu verwenden, aber auf Port 22 zeigen:
telnet test1 22
Wenn Sie eine Verbindung herstellen, sehen Sie:
Versuch 192.168.144.145 ... Verbunden mit test1. Escape-Zeichen ist '^]'. SSH-2.0-OpenSSH_5.3
Die letzte Zeile ist die zu suchende:
SSH-2.0-OpenSSH_5.3
Wenn es heißt, SSH-2.0
dass das gut ist, unterstützt der SSH-Server, mit dem Sie verbunden sind, nur SSH Protocol Version 2. Es werden keine Verbindungen von SSH V1 Protocol Clients unterstützt.
Wenn Sie jedoch Folgendes sehen:
SSH-1.99-OpenSSH_5.3
Das bedeutet dann, dass das Server-Ende weiterhin SSL-Protokoll Version 1 unterstützt. In der sshd_config
Datei ist etwa Folgendes enthalten:
Protocol 1,2
Protokoll 1 ist anfällig und sollte nicht verwendet werden.
Also, um das klar zu stellen. Wenn Sie SSH-2 sehen, wenn Sie an Port 22 des Remote-Servers telneten, können Sie nur ssh Protocol Version 2 verwenden, da der Server Protokoll 1 nicht unterstützt.
Gemäß der obigen Antwort zeigt das Flag -v eine Zeile:
debug1: Remote protocol version 1.99, remote software version OpenSSH_5.3
oder:
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
Du willst es sehen version 2.0
.
Sie können dies ziemlich schnell mit netcat von Ihrem lokalen Computer aus erreichen, zum Beispiel:
$ nc [IP_ADDRESS] 22
SSH-2.0-OpenSSH_5.3
Das gefällt mir besser:
$ echo ~ | nc localhost 22
SSH-1.99-OpenSSH_3.9p1
Protocol mismatch.
$
Der Vorteil hierbei ist, dass dies programmgesteuert erfolgen kann, da die Verbindung nicht offen gehalten wird. Versuchen Sie für Python:
ssh_protocol = float(re.search(r"SSH-(\d.\d+)").group(1))
Die einzige Methode, die mir bekannt ist, erfordert, dass man über ausreichende Berechtigungen verfügt, um die ssh-Protokolleinträge in anzuzeigen /var/log/auth.log
.
$ echo $SSH_CONNECTION
127.0.0.1 12375 127.0.0.1 22
Das erste und zweite Feld der SSH_CONNECTION
Variablen geben die Quell-IP und den Quell-Port meiner Verbindung an. Durch grep
-ing für diese Werte in /var/log/auth.log
, kann ich den Protokolleintrag findet aus , wenn meine SSH - Verbindung authentifiziert wurde.
$ sudo grep -F ' from 127.0.0.1 port 12375 ' /var/log/auth.log | grep ssh
Jun 26 16:29:52 morton sshd[20895]: Accepted keyboard-interactive/pam for jim from 127.0.0.1 port 12375 ssh2
Dieser Protokolleintrag gibt an, dass meine aktuelle Verbindung das ssh2-Protokoll verwendet. Wenn die SSH-Sitzung mehrere Tage geöffnet war, befindet sich der Protokolleintrag möglicherweise in /var/log/auth.log.0
einer älteren auth.log
Datei.