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