SSH “chave recusada” apenas com IP público, funciona localmente

SSH “chave recusada” apenas com IP público, funciona localmente

Portanto, meu problema é que não consigo me conectar ao meu servidor SSH (executando no Linux Mint Sarah) do meu cliente (Windows 7 via PuTTY). Funciona apenas através do IP local.

O servidor e o cliente estão na mesma sub-rede. O servidor SSH está configurado para permitir apenas conexões de chave SSH-RSA sem senhas. Instalei uma chave e ela está funcionando conforme desejado quando me conecto ao IP local do servidor.

Abri a porta 22 no firewall do meu dispositivo WAN e posso confirmar que ele se conecta à caixa correta quando tento o IP público, porque ativar/desativar o firewall do servidor causa rejeições. Portanto, a conexão SSH está alcançando o servidor com sucesso, tentando autenticar com a chave privada, mas falha com:

Server refused our key

Parece óbvio, mas não vejo por que a chave falha na autenticação quando consigo obter sucesso com a mesma chave localmente. Esse problema tem sido difícil de pesquisar porque a maioria dos resultados são encaminhamentos de porta incorretos.

Isso é o que eu tentei (seguindoesseguia, entre outros):

  • Atualizados todos os pacotes no servidor e apt-get install openssh-server.
  • Em /etc/ssh/sshd_configeu configurei:
    • Port 22
    • AllowUsers user
    • PasswordAuthentication no
    • UsePAM no
  • No PuTTYgen, criei uma chave pública e privada salva em um diretório (no Windows).
  • Em /home/user/.ssh/authorized_keys, copiei a parte da chave pública começando ssh-rsae terminando == commentem uma única linha com um retorno de carro no final.
  • chmod 700 ~/.sshque lista ls -alcomodrwx------
  • chmod 644 ~/.ssh/authorized_keysque lista ls -lcomo-rw-r--r--
  • No PuTTY, em SSH > Auth, defina "Chave privada para autenticação" como a chave privada gerada anteriormente.
  • Conecte-se à porta 22 como user@<local_ip>... bem-sucedido.
  • Conecte-se à porta 22 como user@<public_ip>....Server refused our key

Como bônus, tailing /var/log/auth.lognão me dá nada quando a chave é recusada. Ao conectar localmente, ele imprime uma Accepted publickeylinha.

Por último, e não tenho certeza se isso é relevante, mas tentar conectar-me ao SFTP com o FileZilla no IP público me dá este erro:

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

Dizer que sou um usuário intermediário do Linux seria um exagero, então talvez eu esteja negligenciando alguma coisa. Espero ter deixado meu problema claro. Agradeço qualquer ajuda!


Editar: Saída dos pacotes SSH e dados brutos do PuTTY (principalmente lixo, incluindo o que achei legível 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

Responder1

Essa linha me faz suspeitar que você está realmente se conectando ao seu roteador ou modem ao se conectar à porta 22 do seu IP público.

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

Se você se conectar usando o IP interno, obterá a mesma linha de versão do servidor? Caso contrário, você provavelmente precisará desabilitar o SSH em seu modem e/ou roteador e configurar o encaminhamento de porta (se ainda não tiver feito) para a porta 22 para o IP interno do seu servidor Linux.

Se você não conseguir desabilitar o SSH no seu modem/roteador, você pode tentar encaminhar outra porta (2222, por exemplo) para a porta 22 no seu servidor Linux.

informação relacionada