Tailscale: SSH funktioniert mit manuell kompiliertem Openssh, aber nicht mit systeminstalliertem Openssh

Tailscale: SSH funktioniert mit manuell kompiliertem Openssh, aber nicht mit systeminstalliertem Openssh

(Diese Frage sollte mit „Tailscale“ gekennzeichnet sein, aber das gibt es noch nicht – erfordert Kenntnisse von Tailscale)

Ich habe einen Standard-Laptop mit Ubuntu 20.04, der sich über SSH mit einem Remote-Raspberry Pi (Port 22) verbindet. Am Remote-Standort gibt es eine Portweiterleitung auf dem Router (59995->22).

Hinweis: Habe ich ~/.ssh/configwährend des Tests entfernt.

Die SSH-Verbindung ist immer erfolgreich. Dazu wird Folgendes verwendet:

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

Wenn ich jedoch die IP von Tailscale verwende, wird keine Verbindung hergestellt. Das Problem bleibt 120 Sekunden lang hängen und dann tritt eine Zeitüberschreitung auf:

ssh user@tailscale-ip -i ~/.ssh/id_rsa(funktioniert nicht)

Wenn ich OpenSSH v8.2 jedoch manuell kompiliere und diese Version anstelle der Binärdatei /usr/bin/ssh verwende, funktioniert es einwandfrei! Obwohl /usr/bin/ssh auch v8.2 ist

./ssh user@tailscale-ip -i ~/.ssh/id_rsa(das funktioniert!)

Zusammenfassung: Die System-Binärdatei funktioniert einwandfrei mit „normalem“ SSH, aber nicht mit SSH-via-Tailscale. Eine manuell kompilierte (gleiche) Version von OpenSSH funktioniert jedoch sowohl mit normalem SSH als auch mit SSH-over-Tailscale einwandfrei. Weiß jemand, woran das liegen könnte?

Zusätzliche Bemerkungen

Ich glaube nicht, dass es ein offensichtliches Problem mit dem Tailscale-Netzwerk gibt. Wenn ich beispielsweise über die Tailscale-IP nachschaue, nmapzeigt der Scan an, dass die richtigen Ports geöffnet sind, und ich kann netcatdirekt darauf zugreifen tailscale_ip:22, es empfängt und antwortet.

diff ~/openssh-8.2p1/ssh /usr/bin/sshzeigt, dass die Binärdateien unterschiedlich sind. (Auch ein großer Größenunterschied, etwa 3 MB gegenüber 0,7 MB)

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

~/openssh-8.2p1/ssh -V: OpenSSH_8.2p1, OpenSSL 1.1.1f 31. März 2020

Protokoll von /usr/bin/ssh -vvv user@tailscale_ip -i ~/.ssh/id_rsa(IP redigiert)

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

Antwort1

Ich hatte ein ähnliches Problem, weil mein SSH-Client die 2FA-Nachricht von Tailscale nicht angezeigt hat, obwohl die Standard-ACL-Richtlinie auf ssh/actioneingestellt war "check".

Versuchen Sie, die ACL-Einstellungen für Ihren Benutzer/Tag zu überprüfen. Was ist der Aktionswert für SSH? Wenn er auf eingestellt ist "check", versuchen Sie, ihn auf zu ändern "access"und versuchen Sie, über SSH auf Ihren Host zuzugreifen. Wenn das funktioniert, schlage ich vor, zu prüfen, wie man 2FA in den SSH-Client einfügt, damit dieser den Authentifizierungslink von Tailscale anzeigt, der im "check"Modus erforderlich ist.

Einige Links, die mir bei der Untersuchung und Behebung eines ähnlichen Problems geholfen haben:

verwandte Informationen