Wie kann ich die aktuelle SSH-Protokollversion der aktuellen Verbindung finden?

35

Ich verbinde mich mit einer Linux-Maschine (Centos 6.4), die Putty verwendet. Wie finde ich die aktuelle SSH-Verbindungsversion (SSH1 oder SSH2)?

codiac
quelle
Es kann hilfreich sein zu zeigen, welche Nachforschungen Sie bereits angestellt haben
Drew Khoury,
@DrewKhoury Ich habe nur mit Google versucht, eine Antwort auf diese Frage zu finden, aber es wurde kein Ergebnis gefunden. Niemand erklärt, wie ich das aktuell verwendete Verbindungsprotokoll (ssh1 oder ssh2) sehen kann.
codiac

Antworten:

46

Sobald du drin bist, sagst du:

ssh -v localhost

Es wird Ihnen die genaue Version des Servers mitteilen.

cstamas
quelle
4
Es scheint nicht, dass dies den aktuellen Verbindungstyp zeigt.
Codiac
18

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 localhostSie 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 manSeite lesen , werden Sie die -VOption 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 -Vetwas 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.

Thanos
quelle
2
Das ist die Version des Programms , nicht das Protokoll, das für eine Verbindung verwendet wird. Wie eine 3-jährige Antwort richtig erklärt hat, kann dasselbe Programm je nach Konfiguration sowohl SSH1- als auch SSH2-Protokolle unterstützen oder auch nicht.
Dave_thompson_085
11

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.0dass 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_configDatei 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.

Davey
quelle
4

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
Awesominator
quelle
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))
Joshua Detwiler
quelle
0

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_CONNECTIONVariablen 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.0einer älteren auth.logDatei.

Jim L.
quelle