Wie bekomme ich einen persistenten Reverse-SSH-Tunnel mit Autossh?
6059
Cedric Martin
(Ich habe dies nur zu SO gefragt, wurde aber empfohlen, es hier mitzunehmen)
Es ist mir gelungen, einen Reverse-SSH-Tunnel zwischen einem Raspberry Pi 2 und einem Server von mir (Server mit statischer IP-Adresse) zu erstellen, und es funktioniert einwandfrei. Das Benutzerkonto, das ich auf dem Server verwende, heißt "ksproxy" (es ist nicht wirklich ein "Proxy", sondern was auch immer).
Jetzt versuche ich, autossh(aus dem Debian / Raspbian-Paket autossh) auch funktionieren zu lassen, aber es gelingt mir nicht. Ich kann nahe sein
(Ich habe die reale IP hier in dieser Frage geändert, 37.xxx.yyy.zzzum nicht die tatsächliche IP des Servers zu posten.)
Das "funktioniert", aber es bleibt einfach da und tut nichts.
Ich habe versucht, die Ausgabe der ssh-Befehle "-vvv" auszuführen, aber es zeigt nur, dass nichts passiert.
Wenn ich einen anderen Port versuche, schlägt das fehl:
ksproxy@37.xxx.yyy.zzz:~$ ssh rspi@localhost -p 1234 ssh: connect to host localhost port 1234: Connection refused
Wenn ich den richtigen Port (20000) -tprobiere, diesmal aber mit dem param, dasselbe: "funktioniert" aber ich bekomme kein Terminal / Prompt.
Hier ist die -vvvAusgabe
ksproxy@37.xxx.yyy.zzz:~$ ssh -vvv rspi@localhost -t -p 20000 OpenSSH_6.7p1 Debian-5+deb8u1, OpenSSL 1.0.1k 8 Jan 2015 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: Applying options for * debug2: ssh_connect: needpriv 0 debug1: Connecting to localhost [127.0.0.1] port 20000. debug1: Connection established. debug1: key_load_public: No such file or directory debug1: identity file /home/ksproxy/.ssh/id_rsa type -1 debug1: key_load_public: No such file or directory debug1: identity file /home/ksproxy/.ssh/id_rsa-cert type -1 debug1: key_load_public: No such file or directory ... debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_6.7p1 Debian-5+deb8u1
Es fragt nicht nach einem Passwort, es zeigt kein Terminal / Prompt an.
Was verstehe ich hier nicht oder mache ich falsch?
Ich denke nicht, dass es sich um ein Firewall-Problem handelt, da die "non autossh" -Methode gut funktioniert (aber dann bekomme ich nicht die automatische "immer auf" / Wiederverbindungsfunktion). Ich möchte wirklich gerne Auto-Shash-Arbeit machen (ich weiß, ich könnte eine Problemumgehung finden, wie ein Crontab, der meinen manuellen SSH-Tunnel automatisch neu startet, aber das wäre wahrscheinlich spröder als Autowh-Arbeit).
In diesem Fall verwenden Sie nicht die -ROption ssh, um einen Reverse-Tunnel einzurichten. Sie geben -Mstattdessen die Autossh- Option an. Der Parameter autossh -M veranlasst autossh, auf diesem Port einen Tunnel einzurichten, der autossh für seine eigenen Zwecke verwendet (um regelmäßig zu testen, ob die SSH-Verbindung noch funktioniert). Es ist nicht das Äquivalent des Parameters ssh -R. Wenn Sie in diesem Szenario eine Verbindung zu Port 20000 herstellen, werden Sie an den privaten Verbindungstestport von autossh angeschlossen.
Sie sollten weiterhin den umgekehrten Tunnel angeben, den Sie mit der Option -R von ssh verwenden möchten. Wenn Sie die Echoport-Funktion von autossh verwenden möchten, sollten Sie diese Funktion auf einem anderen Port ausführen:
Vielen Dank, es hat geklappt, nachdem ich * "- R" * verwendet habe, um einen Reverse-Tunnel anzugeben. Ich bin mit SSH nicht sehr vertraut, habe es aber dank Ihrer Antwort so verstanden, dass ich es brauchte: Jetzt schreibe ich alles auf (und die Antwort ist hier auf SO sicher).
Cedric Martin vor 8 Jahren
0