¿Cómo puedo encontrar la versión actual del protocolo ssh de la conexión actual?

35

Me conecto a una máquina Linux (Centos 6.4) usando masilla. Excepto por el hecho de que puedo configurar la masilla para usar solo un tipo de protocolo, ¿cómo puedo encontrar la versión de conexión ssh actual (SSH1 o SSH2)?

bacalao
fuente
Puede ayudar a mostrar qué investigación ya has hecho
Drew Khoury
@DrewKhoury Solo intenté con google encontrar una respuesta a esto, pero no encontré ningún resultado al respecto. Nadie explica cómo puedo ver el protocolo de conexión actual (en uso) (ssh1 o ssh2).
codiac

Respuestas:

46

Una vez que estás dentro dices:

ssh -v localhost

le dirá la versión exacta del servidor.

cstamas
fuente
44
No parece que esto muestre el tipo de conexión actual.
codiac
18

Sé que esta es una vieja pregunta, pero desde que la encontré, no pude resistirme a publicar una forma alternativa.

Como sugirió cstamas , puede usar ssh -v localhostsimplemente ssh to your self 127.0.0.1 en modo detallado, que mostrará un mensaje de depuración del progreso. Sí, a través de este proceso puede ver la parte superior de la comunicación y puede obtener la versión SSH que está ejecutando actualmente.

Pero si lees la ssh manpágina, encontrarás la -Vopción en ssh más útil. Tomado la página de manual de ssh :

-V Muestra el número de versión y sale.

-v Modo detallado. Hace que ssh imprima mensajes de depuración sobre su progreso. Esto es útil para depurar problemas de conexión, autenticación y configuración. Múltiples opciones -v aumentan la verbosidad. El máximo es 3.

Así que creo que sería mejor simplemente hacer ssh -Vy obtener algo similar a:

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

Espero que esto ayude.

Thanos
fuente
2
Esa es la versión del programa , no el protocolo utilizado para una conexión. Como una respuesta anterior de 3 años explicó correctamente, el mismo programa puede admitir los protocolos SSH1 y SSH2, o no, dependiendo de la configuración.
dave_thompson_085
11

Masilla En sesión, Registro, seleccione el botón de opción "Paquetes SSH y datos sin procesar". Seleccione el archivo de registro como putty.log en la ubicación que elija. Haz la conexión. Deberías ver:

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

Vea a continuación los detalles sobre lo que significa SSH-2.0.

Otros métodos También podría intentar usar el cliente telnet pero señalar el puerto 22:

telnet test1 22

Cuando te conectes verás:

Intentando 192.168.144.145 ... Conectado a prueba1. El carácter de escape es '^]'. SSH-2.0-OpenSSH_5.3

La última línea es la que debe buscar:

SSH-2.0-OpenSSH_5.3

Si dice SSH-2.0que eso es bueno, el servidor ssh al que se conectó solo admite la versión 2 del protocolo SSH. No admitirá conexiones de clientes del protocolo SSH V1.

Sin embargo, si ves:

SSH-1.99-OpenSSH_5.3

Entonces eso significa que el servidor aún es compatible con el Protocolo SSL Versión 1. Tiene algo como esto en su sshd_configarchivo:

Protocol 1,2

El Protocolo 1 es vulnerable y no debe usarse.

Así que para aclarar eso. Si ve SSH-2 cuando hace telnet al puerto 22 del servidor remoto, solo puede usar la versión 2 del protocolo ssh, ya que el servidor no es compatible con el protocolo 1.

Según la respuesta anterior de cstamas, el indicador -v mostrará una línea:

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

o:

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

Quieres ver version 2.0alli

davey
fuente
4

Puede obtener esto bastante rápido usando netcat desde su máquina local, por ejemplo:

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

Me gusta más esto:

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

El beneficio aquí es que se puede hacer mediante programación ya que la conexión no se mantiene abierta. Para Python, intente:

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

El único método que conozco requiere que uno tenga privilegios suficientes para ver las entradas de registro ssh /var/log/auth.log.

$ echo $SSH_CONNECTION 
127.0.0.1 12375 127.0.0.1 22

Los campos primero y segundo de la SSH_CONNECTIONvariable indican la IP de origen y el puerto de origen de mi conexión. Al grepbuscar esos valores en /var/log/auth.log, puedo encontrar la entrada de registro de cuando se autenticó mi conexión 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

Esta entrada de registro me dice que mi conexión actual está usando el protocolo ssh2. Por supuesto, si la sesión ssh ha estado abierta durante varios días, la entrada del registro puede estar en/var/log/auth.log.0 algún auth.logarchivo anterior .

Jim L.
fuente