SSH "clave rechazada" solo con IP pública, funciona localmente

SSH "clave rechazada" solo con IP pública, funciona localmente

Entonces mi problema es que no puedo conectarme a mi servidor SSH (que se ejecuta en Linux Mint Sarah) desde mi cliente (Windows 7 a través de PuTTY). Sólo funciona a través de la IP local.

Tanto el servidor como el cliente están en la misma subred. El servidor SSH está configurado para permitir solo conexiones de clave SSH-RSA sin contraseñas. Instalé una clave y funciona correctamente como deseaba cuando me conecto a la IP local del servidor.

Abrí el puerto 22 en el firewall de mi dispositivo WAN y puedo confirmar que se conecta al cuadro correcto cuando intento la IP pública, porque activar o desactivar el firewall del servidor provoca rechazos. Entonces, la conexión SSH llega exitosamente al servidor, intenta autenticarse con la clave privada, pero falla con:

Server refused our key

Suena obvio, pero no veo por qué la clave no logra autenticarse cuando puedo hacerlo con la misma clave localmente. Este problema ha sido difícil de investigar porque la mayoría de los resultados son reenvíos de puertos incorrectos.

Esto es lo que he probado (siguiendoesteguía, entre otros):

  • Se actualizaron todos los paquetes en el servidor y apt-get install openssh-server.
  • En /etc/ssh/sshd_confighe configurado:
    • Port 22
    • AllowUsers user
    • PasswordAuthentication no
    • UsePAM no
  • En PuTTYgen, creó una clave pública y privada guardada en un directorio (en Windows).
  • En /home/user/.ssh/authorized_keys, copié la parte de la clave pública que comienza ssh-rsay termina == commenten una sola línea con un retorno de carro al final.
  • chmod 700 ~/.sshque figura bajo ls -alcomodrwx------
  • chmod 644 ~/.ssh/authorized_keysque figura bajo ls -lcomo-rw-r--r--
  • En PuTTY, en SSH > Auth, establezca "Clave privada para autenticación" en la clave privada generada anteriormente.
  • Conéctese al puerto 22 como user@<local_ip>... éxito.
  • Conéctese al puerto 22 como user@<public_ip>... Server refused our key.

Como beneficio adicional, tailing /var/log/auth.logno me da nada cuando se rechaza la clave. Al conectarse localmente, imprime una Accepted publickeylínea.

Por último, y no estoy seguro si esto es relevante, pero intentar conectarme con SFTP con FileZilla en la IP pública me da este error:

Error:  The first key-exchange algorithm supported by the server is diffie-hellman-group1-sha1, which is no longer secure. Aborting connection.
Error:  Could not connect to server

Decir que soy un usuario intermedio de Linux sería exagerar, así que tal vez estoy pasando por alto algo. Espero haber dejado claro mi problema. ¡Agradezco cualquier ayuda!


Editar: Salida de los paquetes SSH de PuTTY y datos sin procesar (en su mayoría basura, por lo que incluí lo que encontré legible por humanos):

Event Log: Looking up host "<omitted>"
Event Log: Connecting to <omitted> port 22
Event Log: We claim version: SSH-2.0-PuTTY_Release_0.67
Event Log: Server version: SSH-2.0-dropbear_0.46
Event Log: We believe remote version has SSH-2 channel request bug
Event Log: Using SSH protocol version 2
Event Log: Using Diffie-Hellman with standard group "group1"
Event Log: Doing Diffie-Hellman key exchange with hash SHA-1
Event Log: Host key fingerprint is:
Event Log: ssh-rsa 1040 <omitted>
Outgoing packet #0x2, type 21 / 0x15 (SSH2_MSG_NEWKEYS)
Event Log: Initialised triple-DES CBC client->server encryption
Event Log: Initialised HMAC-SHA1 client->server MAC algorithm
Incoming packet #0x2, type 21 / 0x15 (SSH2_MSG_NEWKEYS)
Event Log: Initialised triple-DES CBC server->client encryption
Event Log: Initialised HMAC-SHA1 server->client MAC algorithm
Incoming packet #0x4, type 51 / 0x33 (SSH2_MSG_USERAUTH_FAILURE)
  00000000  00 00 00 12 70 75 62 6c 69 63 6b 65 79 2c 70 61  ....publickey,pa
  00000010  73 73 77 6f 72 64 00                             ssword.
Event Log: Server refused our key

Respuesta1

Esta línea me hace sospechar que en realidad te estás conectando a tu enrutador o módem cuando te conectas al puerto 22 de tu IP pública.

Event Log: Server version: SSH-2.0-dropbear_0.46

Si se conecta utilizando la IP interna, ¿obtiene la misma línea de versión del servidor? De lo contrario, probablemente necesite desactivar SSH en su módem y/o enrutador y configurar el reenvío de puertos (si aún no lo ha hecho) para el puerto 22 a la IP interna de su servidor Linux.

Si no puede desactivar SSH en su módem/enrutador, puede intentar reenviar otro puerto (2222 por ejemplo) al puerto 22 en su servidor Linux.

información relacionada