Tailscale: SSH funciona con Openssh compilado manualmente, pero no con Openssh instalado en el sistema

Tailscale: SSH funciona con Openssh compilado manualmente, pero no con Openssh instalado en el sistema

(Esta pregunta debería etiquetarse con "Tailscale", pero eso aún no existe; requiere conocimiento de Tailscale)

Tengo una computadora portátil Ubuntu 20.04 estándar, que se conecta mediante ssh a una Raspberry Pi remota (puerto 22). En la ubicación remota, hay reenvío de puertos en el enrutador (59995->22).

Nota: lo he eliminado ~/.ssh/configdurante las pruebas.

SSH siempre se conecta exitosamente, usando:

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

Sin embargo, cuando uso Tailscale IP, nunca se conecta, simplemente se cuelga durante 120 segundos y luego se agota el tiempo de espera:

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

Sin embargo, si compilo manualmente OpenSSH v8.2 y uso esa versión, en lugar del binario /usr/bin/ssh, ¡funciona perfectamente! Aunque /usr/bin/ssh también es v8.2

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

Resumen: el sistema binario funciona bien con ssh "normal", pero no con ssh-via-tailscale. Sin embargo, una (misma) versión compilada manualmente de Openssh funciona bien tanto con ssh normal como con ssh-over-tailsale. ¿Alguien sabe qué podría estar causando esto?

Notas adicionales

No creo que sea ningún problema obvio con la red de escala final: es decir, si investigo a través de IP de escala final, nmapel escaneo muestra que los puertos correctos están abiertos y puedo acceder netcatdirectamente a él tailscale_ip:22, está recibiendo y respondiendo.

diff ~/openssh-8.2p1/ssh /usr/bin/sshmuestra que los binarios difieren. (también hay una gran diferencia de tamaño, alrededor de 3 MB frente a 0,7 MB)

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

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

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

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

Respuesta1

Tuve un problema similar porque mi cliente ssh no mostraba el mensaje 2FA de Tailscale, con la política de ACL predeterminada configurada ssh/actionen "check".

¿Intenta verificar la configuración de ACL para su usuario/etiqueta? ¿Cuál es el valor de acción para ssh? Si está configurado en "check", intente cambiarlo "access"e intente acceder a su host a través de ssh. Si esto funciona, sugeriré investigar cómo agregar 2FA en el cliente ssh para que muestre el enlace de autenticación de Tailscale que se requiere en el "check"modo.

Algunos enlaces que me ayudaron a investigar y solucionar problemas similares:

información relacionada