He estado luchando durante horas para encontrar el sentido de un error específico de la conexión a un servidor SSH de un reciente sistema de macOS.
ssh user@machine -p 22
He añadido todas las llaves ~/.ssh/authorized_keys
en el equipo de destino. Las llaves se han generado con la configuración predeterminada para ssh-keygen
.
El servidor es un recién aprovisionado de Ubuntu 18.04 instancia en Azure, que también trató de diferente proveedor de la nube.
Puedo conectar correctamente con la clave pública/privada de autenticación (PKA) de una máquina de Ubuntu. Que no se puede conectar al puerto 22 con la clave pública/privada de autenticación (PKA) de los macOS de la máquina en cuestión.
Lo que me estoy perdiendo?
Los síntomas
Para la conexión de los macOS máquina que observar los síntomas siguientes:
- La conexión con el servidor funciona con autenticación de contraseña
- La conexión con el servidor no funciona con la PKA
- Cuando empiezo un segundo servidor SSH utilizando
/usr/sbin/sshd -d -p 2222
, la conexión con el servidor funciona con PKA (usandossh -p 2222
en el cliente) - Mismo para los puertos 23, 80
- Comportamiento de la misma mediante
- el built-in del cliente SSH
- un recién hecho uno (versión 8.1p1 con
brew install openssh
) - cyberduck
En los registros del cliente
He comprobado los registros de ssh -vvv
para ambos puertos. La única diferencia (aparte de la clave de host diferencias) son las siguientes líneas que son las que faltan cuando se utiliza el puerto 22 (esto hace que sea muy difícil de búsqueda para el problema):
debug3: put_host_port: [machine]:2222\
...
debug3: put_host_port: [ip-address]:2222\
debug3: put_host_port: [machine]:2222\
...
debug3: receive packet: type 7\
debug1: SSH2_MSG_EXT_INFO received\
debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521>\
Parece que, cuando se conecta al puerto 22, el servidor no puede enviar (o el cliente no recibe) un "paquete de tipo 7" con SSH2_MSG_EXT_INFO
y kex_input_ext_info
.
Configuración de cliente
La salida de ssh -G
(la cual muestra la configuración efectiva) es idéntico para el puerto 22 y de otros puertos.
Los registros del servidor
Cuando se mira a la salida de la /usr/sbin/sshd -ddd
, la siguiente entrada es falta para el puerto 22:
debug3: send packet: type 7 [preauth]
El servidor no envía un "tipo de paquete de 7"; pero tal vez esto es sólo una relación de síntoma?
También veo las siguientes diferencias:
-
El puerto 22:
debug2: KEX algorithms: curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1 [preauth] debug2: host key algorithms: ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa [preauth]
-
El puerto 80:
debug2: KEX algorithms: curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c [preauth] debug2: host key algorithms: ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ssh-ed25519-cert-v01@openssh.com,rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa [preauth]
Participaciones Extra (en comparación con el puerto 22):
KEX algorithms: ext-c-info
host key algorithms: rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com
Orden diferente:
ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
Solución
Para las máquinas que están bajo mi control, puede cambiar el puerto por defecto del demonio de SSH.
Pregunta
¿Qué más puedo hacer para reducir el problema?