Hoje percebi uma coisa muito estranha:
Eu tenho um servidor (executando Ubuntu Server 12.04.4 LTS) em minha rede local cuja porta SSH é acessível pela internet (posso me conectar a ele usando ssh my.internet.ip.address
).
Porém, só hoje percebi que não consigo me conectar a ele na rede local ( ssh its.local.ip.address
falha sem erros).
Verifiquei /etc/hosts.deny
e adicionei meu computador explicitamente /etc/hosts.allow
, mas isso não mudou nada. Claro, também tentei reiniciar o ssh e todo o servidor. Não há novas atualizações disponíveis.
A conexão local falha:
myself@my-desktop ~ $ ssh -v its.local.ip.address
OpenSSH_6.2p2 Ubuntu-6ubuntu0.4, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to its.local.ip.address [its.local.ip.address] port 22.
debug1: Connection established.
debug1: identity file /home/myself/.ssh/id_rsa type -1
debug1: identity file /home/myself/.ssh/id_rsa-cert type -1
debug1: identity file /home/myself/.ssh/id_dsa type -1
debug1: identity file /home/myself/.ssh/id_dsa-cert type -1
debug1: identity file /home/myself/.ssh/id_ecdsa type -1
debug1: identity file /home/myself/.ssh/id_ecdsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2p2 Ubuntu-6ubuntu0.4
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1.4
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1.4 pat OpenSSH_5*
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
Connection closed by its.local.ip.address
myself@my-desktop ~ $
No entanto, a conexão remota funciona:
myself@my-desktop ~ $ ssh -v my.internet.ip.address
OpenSSH_6.2p2 Ubuntu-6ubuntu0.4, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to my.internet.ip.address [my.internet.ip.address] port 22.
debug1: Connection established.
debug1: identity file /home/myself/.ssh/id_rsa type -1
debug1: identity file /home/myself/.ssh/id_rsa-cert type -1
debug1: identity file /home/myself/.ssh/id_dsa type -1
debug1: identity file /home/myself/.ssh/id_dsa-cert type -1
debug1: identity file /home/myself/.ssh/id_ecdsa type -1
debug1: identity file /home/myself/.ssh/id_ecdsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2p2 Ubuntu-6ubuntu0.4
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1.4
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1.4 pat OpenSSH_5*
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ECDSA [... hidden here ...]
debug1: Host 'my.internet.ip.address' is known and matches the ECDSA host key.
debug1: Found key in /home/myself/.ssh/known_hosts:4
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: password
debug1: Next authentication method: password
[email protected]'s password:
[ ... everything works just fine ... ]
Qual pode ser a causa deste problema e, mais importante, como posso resolvê-lo?
Nota: O aumento da verbosidade ( ssh -vvv
) não mostra nada adicional no ponto em que ambas as saídas se desviam.
Responder1
O servidor está decidindo interromper a conexão, então você terá que depurar o problema do lado do servidor. Se você tiver acesso "root" no servidor, poderá executar sshd
interativamente:
/path/to/sshd -ddd -p 42
Isso iniciará uma cópia da sshd
escuta na porta 42 – você pode especificar um número diferente – no modo de depuração. Ele será executado em primeiro plano, aceitando uma única conexão e imprimindo informações de depuração em seu terminal.
Agora conecte-se com seu cliente:
ssh -v -p 42 its.local.ip.address
Com alguma sorte, as mensagens de depuração do lado do servidor deverão indicar por que a sessão está sendo interrompida.
Responder2
Presumo que a máquina cliente seja a mesma em ambas as capturas (mesmo que os prompts sejam diferentes). Como está permitindo a conexão TCP, provavelmente está relacionado ao DNS reverso e/ou políticas de negação na configuração do sshd.
Tente desligar o DNS no lado do servidor (UseDNS=no no sshd_config) e reiniciar o sshd (kill -1 deve ser suficiente)
Responder3
Foi relatado que esse bug afetou vários usuários.
Quando local, tente ssh -X para desabilitar o encaminhamento de x.
Além disso, a Unidade Máxima de Transmissão [MTU] pode precisar ser ajustada para o MTU do ssh_server.
** se isso não funcionar quando local, tente:
myself@my-desktop ~ $ ssh -v my.internet.ip.address
Se ele puder sair da sua rede, então volte para ...
Podem ser erros de configuração do servidor, verifique sshd_config para "usuários permitidos", bem como onde oknown_host seria armazenado, adicione uma versão local.ip.address do usuário "eu".
uma cópia do sshd pode ajudar