![Tailscale: SSH funktioniert mit manuell kompiliertem Openssh, aber nicht mit systeminstalliertem Openssh](https://rvso.com/image/776327/Tailscale%3A%20SSH%20funktioniert%20mit%20manuell%20kompiliertem%20Openssh%2C%20aber%20nicht%20mit%20systeminstalliertem%20Openssh.png)
(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/config
wä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, nmap
zeigt der Scan an, dass die richtigen Ports geöffnet sind, und ich kann netcat
direkt darauf zugreifen tailscale_ip:22
, es empfängt und antwortet.
diff ~/openssh-8.2p1/ssh /usr/bin/ssh
zeigt, 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/action
eingestellt 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: