Tailscale: SSH funciona com Openssh compilado manualmente, mas não com Openssh instalado no sistema

Tailscale: SSH funciona com Openssh compilado manualmente, mas não com Openssh instalado no sistema

(Esta questão deve ser marcada com "Tailscale", mas isso ainda não existe - requer conhecimento de Tailscale)

Eu tenho um laptop Ubuntu 20.04 padrão, conectando via ssh a um Raspberry Pi remoto (porta 22). No local remoto, há encaminhamento de porta no roteador (59995->22).

Nota: eu removi ~/.ssh/configdurante o teste.

O SSH sempre se conecta com sucesso, usando:

ssh user@public_ip -i ~/.ssh/id_rsa -p 59995

No entanto, quando eu uso o Tailscale IP, ele nunca se conecta, apenas trava por 120 segundos e depois expira:

ssh user@tailscale-ip -i ~/.ssh/id_rsa(não funciona)

No entanto, se eu compilar manualmente o OpenSSH v8.2 e usar essa versão, em vez do binário /usr/bin/ssh, ele funcionará perfeitamente! Mesmo que /usr/bin/ssh também seja v8.2

./ssh user@tailscale-ip -i ~/.ssh/id_rsa(isso funciona!)

Recapitulação: o binário do sistema funciona bem com ssh "normal", mas não com ssh-via-tailscale. No entanto, uma versão compilada manualmente (mesma) do Openssh funciona bem tanto com ssh regular quanto com ssh-over-tailsale. Alguém sabe o que pode estar causando isto?

Notas Adicionais

Não acho que seja um problema óbvio com a rede tailscale: ou seja, se eu investigar via IP tailscale, nmapa varredura mostra que as portas corretas estão abertas e posso netcatdiretamente para tailscale_ip:22, ele está recebendo e respondendo.

diff ~/openssh-8.2p1/ssh /usr/bin/sshmostra que os binários diferem. (grande diferença de tamanho também, cerca de 3 MB versus 0,7 MB)

/usr/bin/ssh -V: OpenSSH_8.2p1 Ubuntu-4ubuntu0.4, OpenSSL 1.1.1f 31 de março de 2020

~/openssh-8.2p1/ssh -V: OpenSSH_8.2p1, OpenSSL 1.1.1f 31 de março de 2020

Registro de /usr/bin/ssh -vvv user@tailscale_ip -i ~/.ssh/id_rsa(ip redigido)

OpenSSH_8.2p1 Ubuntu-4ubuntu0.4, OpenSSL 1.1.1f  31 Mar 2020
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug2: resolve_canonicalize: hostname 100.1.1.1 is address
debug2: ssh_connect_direct
debug1: Connecting to 100.1.1.1 [100.1.1.1] port 22.
< 2 minute hang here >
ssh: connect to host 100.1.1.1 port 22: Connection timed out

Responder1

Tive um problema semelhante porque meu cliente ssh não exibia a mensagem 2FA do Tailscale, com a política ACL padrão ssh/actiondefinida como "check".

Tente verificar as configurações de ACL para seu usuário/tag? Qual é o valor da ação para ssh? Se estiver definido como "check"- tente alterá-lo para "access"e tente acessar seu host via ssh. Se funcionar, sugiro que você veja como adicionar 2FA ao cliente ssh para que mostre o link de autenticação do Tailscale, que é necessário no "check"modo.

Alguns links que me ajudaram a investigar e corrigir problemas semelhantes:

informação relacionada