Tenho duas máquinas, o Windows 11 rodando como host e o Windows 7 rodando como convidado.
ambos têm o openssh instalado com versões diferentes, o servidor ssh em execução no convidado e o cliente ssh no host.
o problema é que o servidor não respondeu ao cliente, embora o log diga que ele está conectado:
$ ssh -vvv -i .ssh/id_rsa [email protected]
OpenSSH_9.9p1, OpenSSL 3.4.0 22 Oct 2024
debug1: Reading configuration data /home/ahmad/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug2: resolve_canonicalize: hostname 127.0.0.1 is address
debug3: expanded UserKnownHostsFile '~/.ssh/known_hosts' -> '/home/ahmad/.ssh/known_hosts'
debug3: expanded UserKnownHostsFile '~/.ssh/known_hosts2' -> '/home/ahmad/.ssh/known_hosts2'
debug3: channel_clear_timeouts: clearing
debug3: ssh_connect_direct: entering
debug1: Connecting to 127.0.0.1 [127.0.0.1] port 22.
debug3: set_sock_tos: set socket 4 IP_TOS 0x48
debug1: Connection established.
debug1: identity file .ssh/id_rsa type 0
debug1: identity file .ssh/id_rsa-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_9.9
kex_exchange_identification: read: Software caused connection abort
banner exchange: Connection to 127.0.0.1 port 22: Software caused connection abort
a princípio, acho que configurei incorretamente as configurações de encaminhamento de porta no Virtual Box, porque é provável que o servidor não tenha recebido nenhum pacote em primeiro lugar, então presumo que o pacote seja recebido apenas pelo programa VirtualBox que faz trabalhos de encaminhamento e, então, tentei ter certeza de que o configurei corretamente desativando o sshd e expondo nc
o pacote do msys2 openbsd-netcat
na porta 22, e funciona corretamente, o cliente pode se conectar e trocar dados com o servidor:
Acredito que a captura de tela acima também elimina as possibilidades de problemas de firewall.
ok, talvez o servidor openssh só escute na interface de loopback, e quando eu verifico com netstat
, a saída mostra que ele escuta em todas as interfaces (eu também tentei garantir isso explicitamente no sshd_config
arquivo):
e caso o servidor ssh não esteja funcionando corretamente, tentei conectar localmente via interface de loop back e funcionou sem problemas:
Eu elimino "versão diferente do openssh" como possibilidade da causa, porque o programa nc no convidado pode receber a resposta do servidor enquanto o host não (então acho que a versão não importa para esses casos):
então, qual é o problema real e quem é o culpado por trás disso? Eu definitivamente esqueci algo importante, por favor, me indique a direção certa, obrigado antecipadamente.
EDIT: Também tentei reinicializar (tanto o guest quanto o host, respectivamente), mas não mudou nada.
EDIT 2: testei usando outro IP em vez de loopback, e também funciona, porém o host ainda não consegue receber respostas:
EDIT 3: neste ponto, estou confuso para descobrir quem é realmente o culpado que me impede de conectar usando ssh, é o próprio openssh? Mas ele funciona no convidado localmente, então é um problema do virtualbox? Mas surpreendentemente o ncat me sugere não culpar o virtualbox, pois ele funciona na mesma porta.
Muito obrigado aos comentários de Grawity, que lançaram alguma luz sobre meu desespero pelo fracasso em várias tentativas e erros (por favor, não compare com o Sr. Thomas Edison).
depois de olhar as regras de entrada de
wf.msc
, percebi que o sshd não está lá. e eu só espero que algo mude se eu colocar novas regras relacionadas ao sshd e de fato foi! a conexão não está mais bloqueada \o/o passo:
Win+r
e digitewf.msc
, clique em regra de entrada, ação -> nova regra -> selecione o programa e escolha sshd.exe nousr\bin
diretório de instalação do msys2. -> permita a conexão -> aplique a regra para qualquer coisa que se ajuste às suas preferências -> dê o nome da regra -> concluir.Parece que o Windows 7 não está sendo gentil com
sshd
o programa e o bloqueia imediatamente com base no executável em vez de na porta. Não tenho ideia do porquê o Windows 7 se comporta dessa maneira. Ele não dá nenhum sinal, prompt ou qualquer outra coisa para notificar o usuário sobre o que está acontecendo. Pelo menos na minha experiência usando o Windows 11, por padrãosshd
o programa não é bloqueado.Espero que ajude outras pessoas que enfrentam problemas semelhantes.