beim Systemstart automatisch einen Reverse-SSH-Tunnel starten

beim Systemstart automatisch einen Reverse-SSH-Tunnel starten

Ich habe einen Remote-Rechner hinter einer Firewall, mit dem ich mich per SSH verbinden möchte. Soweit ich weiß, kann dies durch die Verwendung eines Reverse-SSH-Tunnels erreicht werden.

Der Befehl, den ich verwende, ist

ssh -N -f -R 0.0.0.0:1234:localhost:22  -i /home/username/.ssh/id_rsa.pub  [email protected]

Mein Hauptproblem besteht darin, dass ich diesen Befehl bei jedem Start des Computers ausführen möchte, sodass der Computer nach einem Neustart erreichbar ist.

Ich habe versucht, cron zu verwenden, indem ich den Befehl sowohl in die crontab meines Benutzers als auch in eingefügt habe /etc/cron. Das Problem ist jedoch, dass für beide Befehle ein Passwort abgefragt wird. Ich habe the id_rsa.pubeine Datei erstellt und sie an den Remote-Server gesendet, aber es scheint trotzdem nicht zu funktionieren.

Wenn ich angemeldet bin (z. B. über Teamviewer), kann ich den Befehl ausführen und es wird kein Passwort abgefragt. Wenn ich den Befehl als root ausführe ( sudo), wird das (leere) Passwort für die rsa-Datei abgefragt. Ich vermute, dass mein Problem hier liegt, d. h. wenn cron den Befehl ausführt, fragt ssh nach dem Passwort und der Befehl hängt sich auf.

Ich habe versucht, sowohl die RSA-Datei meines Benutzers als auch die RSA-Datei des Root-Benutzers zu verwenden, und mit keiner von beiden kann ich eine Verbindung herstellen.

Antwort1

Fügen Sie vor Ihrem SSH-Befehl einfach „sleep 60;“ hinzu:

@reboot sleep 60;ssh -N -f -R 0.0.0.0:1234:localhost:22  -i /home/username/.ssh/id_rsa  [email protected]

Nach dem Neustart ist Ihr Netzwerk immer noch ausgefallen.

Antwort2

Nachdem ich mehrere Quellen kombiniert hatte, erstellte ich einen Dienst zum automatischen Starten des Reverse-SSH-Kanals. Die Konfigurationsdateien und die erforderlichen Schritte finden Sie in diesem Repository

Antwort3

Eine bessere Lösung könnte seinautossh:

„autossh ist ein Programm zum Starten und Überwachen einer Kopie von SSH. Bei Bedarf wird es neu gestartet, wenn es abstürzt oder keinen Datenverkehr mehr durchlässt.“

Wie das Zitat besagt, hat dies den zusätzlichen Vorteil, dass die Funktion „Always On“ bereitgestellt wird.

Antwort4

Behebung des SSH-Problems

Sie können den Remote-Computer nicht authentifizieren mitöffentlichSchlüssel, müssen Sie verwendenPrivatSchlüssel, um das zu tun. Der öffentliche Schlüssel muss auf dem Remote-Server sein. Wenn Sie nicht sicher sind, kopieren Sie den öffentlichen Schlüssel einfach wie folgt auf den Remote-Server:

ssh-copy-id -i ~/.ssh/id_rsa.pub username@remoteserver

und führen Sie dann Ihren Befehl mit dem privaten Schlüssel aus:

ssh -N -f -R 0.0.0.0:1234:localhost:22  -i /home/username/.ssh/id_rsa  [email protected]

Ausführen dieses Befehls beim Systemstart

Da Sie bereits mit crontab gearbeitet haben, führen Sie crontab -edie Bearbeitung Ihres Crons aus. Fügen Sie die folgende Zeile hinzu, um diesen Befehl auszuführen, sobald Ihr Computer hochfährt.

@reboot ssh -N -f -R 0.0.0.0:1234:localhost:22  -i /home/username/.ssh/id_rsa  [email protected]

verwandte Informationen