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

1

Então, meu problema é que não consigo me conectar ao meu servidor SSH (executado no Linux Mint Sarah) do meu cliente (Windows 7 via PuTTY). Só funciona através do IP local.

O servidor e o cliente estão na mesma sub-rede. O servidor SSH é configurado para permitir somente conexões de chave SSH-RSA sem senhas. Eu instalei uma chave e isso está funcionando com sucesso quando eu me conecto ao IP local do servidor.

Eu abri a porta 22 no firewall do meu dispositivo WAN, e posso confirmar que ela se conecta à caixa certa quando eu tento o IP público, porque marcar / desativar o firewall do servidor causa rejeições. Portanto, a conexão SSH está atingindo com êxito o servidor, 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 posso ter sucesso com a mesma chave localmente. Esse problema tem sido difícil de pesquisar porque a maioria dos resultados é um encaminhamento de porta incorreto.

Isso é o que eu tentei (seguindo este guia, entre outros):

  • Atualizou todos os pacotes no servidor e apt-get install openssh-server .
  • Em /etc/ssh/sshd_config , configurei:
    • Port 22
    • AllowUsers user
    • PasswordAuthentication no
    • UsePAM no
  • No PuTTYgen, criou uma chave pública e privada salva em um diretório (no Windows).
  • Em /home/user/.ssh/authorized_keys , copiou a parte da chave pública que começa com ssh-rsa e termina com == comment em uma única linha com um retorno de carro no final.
  • chmod 700 ~/.ssh , que lista em ls -al como drwx------
  • chmod 644 ~/.ssh/authorized_keys , que lista em ls -l como -rw-r--r--
  • No PuTTY, em SSH > Autenticação, defina "Chave privada para autenticação" para a chave privada gerada anteriormente.
  • Conecte-se à porta 22, pois user@<local_ip> ... é bem-sucedido.
  • Conecte-se à porta 22 como user@<public_ip> ... Server refused our key .

Como um bônus, tail ing /var/log/auth.log não me dá nada quando a chave é recusada. Ao se conectar localmente, imprime uma linha Accepted publickey .

Por último, e não tenho certeza se isso é relevante, mas tentar se conectar com o 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 estendido, então talvez eu esteja negligenciando alguma coisa. Espero ter esclarecido meu problema. Aprecie qualquer ajuda!

Editar: Saída dos pacotes SSH do PuTTY e dados brutos (principalmente lixo, então incluímos o que eu achei legível):

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
    
por Magnus Bull 17.08.2018 / 17:52

1 resposta

0

Esta linha me faz suspeitar que você está realmente se conectando ao seu roteador ou modem quando se conecta à porta 22 em seu IP público.

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

Se você se conectar usando o IP interno, receberá a mesma linha de versão do servidor? Caso contrário, você provavelmente precisará desativar o SSH no seu modem e / ou roteador e configurar o encaminhamento de porta (se já não estiver pronto) para a porta 22 para o IP interno do servidor Linux.

Se você não puder desabilitar o SSH em seu modem / roteador, poderá tentar redirecionar a porta para outra porta (2222, por exemplo) para a porta 22 em seu servidor Linux.

    
por 17.08.2018 / 23:18