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


Ich verbinde mich mit einem Linux-Rechner (Centos 6.4). Abgesehen davon, dass ich putty so einstellen kann, dass nur ein Protokolltyp verwendet wird, wie kann ich die SSH-Verbindungsversion des aktuellen SSH1 oder SSH2 finden?


25
2017-10-12 07:03


Ursprung


Es kann helfen zu zeigen, welche Forschung Sie bereits getan haben - Drew Khoury
@DrewKhoury Ich habe nur mit Google versucht, eine Antwort darauf zu finden, aber kein Ergebnis gefunden. Niemand erklärt, wie ich das aktuelle Verbindungsprotokoll (ssh1 oder ssh2) sehen kann. - codiac


Antworten:


Sobald du in dir bist, sag:

ssh -v localhost

Es wird Ihnen die genaue Version des Servers mitteilen.


29
2017-10-12 08:08



Es scheint nicht, dass dies den aktuellen Verbindungstyp zeigt. - codiac


Kitt Wählen Sie unter Sitzung, Protokollierung das Optionsfeld "SSH-Pakete und Rohdaten" aus. Wählen Sie die Protokolldatei als putty.log an einem Speicherort 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

Details zu SSH-2.0 finden Sie unten.

Andere Methoden Sie können auch versuchen, den Telnet-Client zu verwenden, aber zeigen Sie auf Port 22:

telnet test1 22

Wenn Sie eine Verbindung herstellen, sehen Sie:

Versucht 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 dann ist das gut, der SSH-Server, mit dem Sie verbunden sind, unterstützt nur das SSH-Protokoll Version 2. Es unterstützt keine Verbindungen von SSH V1-Protokoll-Clients.

Wenn Sie jedoch sehen:

SSH-1.99-OpenSSH_5.3

Dann bedeutet das, dass das Server-Ende immer noch SSL-Protokoll Version 1 unterstützt. Es hat so etwas in sich sshd_config Datei:

Protocol 1,2

Protokoll 1 ist anfällig und sollte nicht verwendet werden.

Also um das klar zu machen. Wenn Sie SSH-2 sehen, wenn Sie an Port 22 des Remote-Servers telnet, können Sie nur SSH-Protokoll Version 2 verwenden, da der Server Protokoll 1 nicht unterstützt.

Gemäß der obigen Antwort von cstam zeigt das Flag -v eine Zeile an:

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 sehen version 2.0 Dort.


11
2017-10-12 15:45





Ich weiß, dass dies eine alte Frage ist, aber seit ich dazu gekommen bin, konnte ich mich dagegen wehren, einen alternativen Weg zu veröffentlichen.

Wie cstamas vorgeschlagen, dass Sie verwenden können ssh -v localhost Sie einfach ssh zu Ihrem selbst 127.0.0.1 im ausführlichen Modus, der Debugging-Nachricht des Fortschritts angezeigt wird. Ja, durch diesen Vorgang können Sie sich den Anfang der Kommunikation ansehen und Sie können die SSH-Version abrufen, die Sie gerade ausführen.

Aber wenn du das liest ssh man Seite finden Sie die -V Option auf ssh mehr nützlich. Herausgenommen die ssh man Seite:

-V' Display the version number and exit.

-v' Verbose mode. Causes ssh to print debugging messages about its progress. This is helpful in debugging connection, authentication, and configuration problems. Multiple -v options increase the verbosity. The maximum is 3.

Also ich denke es wäre besser einfach zu machen ssh -V und etwas Ähnliches bekommen:

ssh -V
OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013

Hoffe das hilft.


9
2017-08-18 08:13



Das ist die Version des Programm, nicht das für eine Verbindung verwendete Protokoll. Wie eine 3 Jahre frühere Antwort richtig erklärt, kann das gleiche Programm sowohl SSH1- als auch SSH2-Protokolle unterstützen oder nicht, je nach Konfiguration. - dave_thompson_085


Sie können dies sehr schnell mit netcat von Ihrem lokalen Rechner erreichen, zum Beispiel:

$ nc [IP_ADDRESS] 22
SSH-2.0-OpenSSH_5.3

4
2018-03-01 03:32





Ich mag das besser:

$ echo ~ | nc localhost 22
SSH-1.99-OpenSSH_3.9p1
Protocol mismatch.
$

Der Vorteil hier ist, dass es programmatisch durchgeführt werden kann, da die Verbindung nicht offen gehalten wird. Versuchen Sie für Python:

ssh_protocol = float(re.search("SSH-(\d.\d+)").group(0))

2
2018-06-13 20:55