61 votes

Comment puis-je connaître la version du protocole SSH de la connexion en cours ?

Je me connecte à une machine Linux (CentOS 6.4) en utilisant PuTTY . Hormis le fait que je peux configurer PuTTY pour n'utiliser qu'un seul type de protocole, comment puis-je connaître la version de la connexion SSH en cours (SSH1 ou SSH2) ?

70voto

gimel Points 30150

Une fois que vous êtes à l'intérieur, vous dites :

ssh -v localhost

il vous indiquera la version exacte du serveur.

42voto

Thanos Points 453

Une autre solution.

En cstamas suggéré, vous pouvez utiliser ssh -v localhost . Il vous suffit de vous connecter en ssh à 127.0.0.1 en mode verbeux, ce qui affichera les messages de débogage de la progression. Oui, grâce à ce processus, vous pouvez regarder en haut de la communication et vous pouvez obtenir la version de SSH que vous exécutez actuellement.

Pero si vous lisez le ssh man vous trouverez la page -V option sur ssh plus utile. Retiré le ssh page de manuel :

-V Afficher le numéro de version et quitter.

-v Mode verbeux. Permet à ssh d'imprimer des messages de débogage sur sa progression. Cela permet de déboguer les problèmes de connexion, d'authentification et de configuration. Plusieurs options -v augmentent la verbosité. Le maximum est de 3.

Je pense donc qu'il serait préférable de faire simplement ssh -V et obtenir quelque chose de similaire à :

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

15voto

Carling Points 229

PuTTY

En Session , Enregistrement , sélectionnez l'option "Paquets SSH et données brutes bouton radio. Sélectionnez le fichier journal en tant que putty.log dans un lieu de votre choix. Établissez la connexion. Vous devriez voir :

Event Log: Server version: SSH-2.0-OpenSSH_5.3
Event Log: Using SSH protocol version 2

Voir ci-dessous pour plus de détails sur la signification de SSH-2.0.

Autres méthodes

Vous pouvez également essayer d'utiliser le client telnet, mais en pointant sur le port 22 :

telnet test1 22

Lorsque vous vous connecterez, vous verrez :

Essai sur 192.168.144.145...
Connecté à test1.
Le caractère d'échappement est '^]'.
SSH-2.0-OpenSSH_5.3

La dernière ligne est celle qu'il faut rechercher :

SSH-2.0-OpenSSH_5.3

S'il est indiqué SSH-2.0 c'est bon, le serveur SSH auquel vous vous êtes connecté ne supporte que la version 2 du protocole SSH. Il ne prend pas en charge les connexions des clients utilisant le protocole SSH V1.

Si toutefois vous voyez :

SSH-1.99-OpenSSH_5.3

Cela signifie que le serveur prend toujours en charge le protocole SSH version 1. Il a quelque chose comme ceci dans son sshd_config archivo:

Protocol 1,2

Le protocole 1 est vulnérable et ne doit pas être utilisé.

Donc, pour que les choses soient claires. Si vous voyez SSH-2 lorsque vous vous connectez au port 22 du serveur distant, vous ne pouvez utiliser que la version 2 du protocole SSH, car le serveur ne prend pas en charge le protocole 1.

Conformément à la réponse de cstamas ci-dessus, le -v affichera une ligne :

debug1: Remote protocol version 1.99, remote software version OpenSSH_5.3

ou :

debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3

Vous voulez voir version 2.0 là.

5voto

Joshua Detwiler Points 151

Je préfère cela :

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

L'avantage est que cette opération peut être effectuée par programme puisque la connexion n'est pas maintenue ouverte. Pour Python, essayez :

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

3voto

Awesominator Points 49

Vous pouvez l'obtenir assez rapidement en utilisant netcat à partir de votre machine locale, par exemple :

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X