Comment trouver la version actuelle du protocole ssh de la connexion actuelle?

35

Je me connecte à une machine Linux (centos 6.4) avec du mastic. Mis à part le fait que je ne peux configurer le mastic que pour utiliser un seul type de protocole, comment puis-je trouver la version de connexion ssh actuelle (SSH1 ou SSH2)?

codiac
la source
Cela peut aider de montrer les recherches que vous avez déjà effectuées
Drew Khoury
@DrewKhoury J'ai seulement essayé avec Google de trouver une réponse à cela, mais aucun résultat n'a été trouvé à ce sujet. Personne n'explique comment puis-je voir le protocole de connexion (utilisé) actuel (ssh1 ou ssh2).
codiac

Réponses:

46

Une fois que vous êtes dedans, vous dites:

ssh -v localhost

il vous indiquera la version exacte du serveur.

cstamas
la source
4
Il ne semble pas que cela montre le type de connexion actuel.
codiac
18

Je sais que c'est une vieille question, mais depuis que je l'ai trouvée, je n'ai pas pu résister à l'affichage d'une autre manière.

Comme cstamas l’a suggéré, vous pouvez ssh -v localhostsimplement utiliser ssh 127.0.0.1 en mode commenté, ce qui affichera un message de débogage de la progression. Oui, grâce à ce processus, vous pouvez regarder en haut de la communication et obtenir la version SSH que vous utilisez actuellement.

Mais si vous lisez la ssh manpage, l’ -Voption sur ssh sera plus utile. Supprimez la page de manuel ssh :

-V Affiche le numéro de version et quitte.

-v Mode verbeux. Force ssh à imprimer des messages de débogage sur sa progression. Ceci est utile pour le débogage des problèmes de connexion, d’authentification et de configuration. Plusieurs options -v augmentent la verbosité. Le maximum est 3.

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

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

J'espère que cela t'aides.

Thanos
la source
2
C'est la version du programme , pas le protocole utilisé pour une connexion. Comme l'expliquait correctement une réponse 3 ans plus tôt, le même programme peut prendre en charge les protocoles SSH1 et SSH2, ou non, en fonction de la configuration.
dave_thompson_085
11

Putty Dans Session, Logging, sélectionnez le bouton radio "Paquets SSH et données brutes". Sélectionnez le fichier journal en tant que putty.log à l’emplacement de votre choix. Faites le lien. Tu devrais 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 en pointant sur le port 22:

telnet test1 22

Lorsque vous vous connectez, vous verrez:

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

La dernière ligne est celle à rechercher:

SSH-2.0-OpenSSH_5.3

Si le message dit SSH-2.0que c'est bon, le serveur ssh auquel vous vous êtes connecté ne prend en charge que le protocole SSH version 2. Il ne prend pas en charge les connexions des clients du protocole SSH V1.

Si toutefois vous voyez:

SSH-1.99-OpenSSH_5.3

Ensuite, cela signifie que le serveur prend toujours en charge le protocole SSL version 1. Il a quelque chose comme ceci dans son sshd_configfichier:

Protocol 1,2

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

Donc, pour que cela soit clair. Si vous voyez SSH-2 lorsque vous utilisez telnet sur le port 22 du serveur distant, vous ne pouvez utiliser que le protocole ssh, version 2, car le serveur ne prend pas en charge le protocole 1.

Selon la réponse cstamas ci-dessus, le drapeau -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.0là - bas.

davey
la source
4

Vous pouvez obtenir cela assez rapidement en utilisant netcat depuis votre ordinateur local, par exemple:

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

J'aime mieux ça:

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

L'avantage ici est que cela peut être fait par programme puisque la connexion n'est pas maintenue ouverte. Pour Python, essayez:

ssh_protocol = float(re.search(r"SSH-(\d.\d+)").group(1))
Joshua Detwiler
la source
0

La seule méthode que je connaisse nécessite de disposer de privilèges suffisants pour afficher les entrées du journal ssh /var/log/auth.log.

$ echo $SSH_CONNECTION 
127.0.0.1 12375 127.0.0.1 22

Les premier et deuxième champs de la SSH_CONNECTIONvariable indiquent l’adresse IP source et le port source de ma connexion. En greprecherchant ces valeurs /var/log/auth.log, je peux trouver l’entrée de journal à partir de l’authentification de ma connexion SSH.

$ 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

Cette entrée de journal me dit que ma connexion actuelle utilise le protocole ssh2. Bien sûr, si la session SSH est ouverte depuis plusieurs jours, l’entrée de journal peut se trouver dans /var/log/auth.log.0un auth.logfichier plus ancien .

Jim L.
la source