![Tailscale: SSH funciona com Openssh compilado manualmente, mas não com Openssh instalado no sistema](https://rvso.com/image/776327/Tailscale%3A%20SSH%20funciona%20com%20Openssh%20compilado%20manualmente%2C%20mas%20n%C3%A3o%20com%20Openssh%20instalado%20no%20sistema.png)
(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/config
durante 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, nmap
a varredura mostra que as portas corretas estão abertas e posso netcat
diretamente para tailscale_ip:22
, ele está recebendo e respondendo.
diff ~/openssh-8.2p1/ssh /usr/bin/ssh
mostra 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/action
definida 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: