¿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)?
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).
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
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
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 .
Respuestas:
Una vez que estás dentro dices:
le dirá la versión exacta del servidor.
fuente
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 localhost
simplemente 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 man
página, encontrarás la-V
opción en ssh más útil. Tomado la página de manual de ssh :Así que creo que sería mejor simplemente hacer
ssh -V
y obtener algo similar a:Espero que esto ayude.
fuente
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:
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:
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:
Si dice
SSH-2.0
que 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_config
archivo: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:
o:
Quieres ver
version 2.0
allifuente
Puede obtener esto bastante rápido usando netcat desde su máquina local, por ejemplo:
fuente
Me gusta más esto:
El beneficio aquí es que se puede hacer mediante programación ya que la conexión no se mantiene abierta. Para Python, intente:
fuente
El único método que conozco requiere que uno tenga privilegios suficientes para ver las entradas de registro ssh
/var/log/auth.log
.Los campos primero y segundo de la
SSH_CONNECTION
variable indican la IP de origen y el puerto de origen de mi conexión. Algrep
buscar esos valores en/var/log/auth.log
, puedo encontrar la entrada de registro de cuando se autenticó mi conexión ssh.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únauth.log
archivo anterior .fuente