Ich werde in naher Zukunft eine Reihe von Maschinen bereitstellen, die sich hinter Routern befinden werden. Es ist nicht möglich, für jeden Router und jede Portweiterleitung ein dynamisches DNS einzurichten. Gibt es also eine Möglichkeit, diese Computer so zu konfigurieren, dass sie eine TCP-Verbindung zu meinem Computer herstellen und dann eine SSH-Verbindung zum Remotecomputer herstellen diese Verbindung?
IE:
COMPUTER A OPENS TCP CONNECTION TO COMPUTER B
COMPUTER B OPENS SSH CONNECTION OVER THE EXISTING TCP CONNECTION TO COMPUTER A
COMPUTER B NOW HAS SSH CONNECTION TO COMPUTER A
Ist das möglich und wenn ja, wie kann ich das tun?
Antworten:
In
/etc/ssh/sshd
für Computer B eingestellt:Von Computer A :
Vom Computer B :
Beachten Sie, dass 2222 eine willkürliche Nummer mit hohem Port ist, die ich ausgewählt habe. Dieser Port auf Computer B wird dann über die auf Computer A initialisierte SSH-Verbindung zurück zu Port 22 getunnelt. Wenn Sie über mehrere Computer verfügen, sollten Sie für jeden Computer einen anderen Port verwenden.
Für Ihren Anwendungsfall möchten Sie dies wahrscheinlich über ein Skript ausführen, damit Sie es zu einem Daemon machen und in regelmäßigen Abständen versuchen können, die Verbindung wiederherzustellen, wenn der Link unterbrochen wird. Sie möchten wahrscheinlich ein spezielles Konto mit einer Shell, die nur
/bin/true
auf Computer B installiert ist, um die eingehenden Verbindungen zu verwalten. Sie können dann entweder einen einzelnen Schlüssel oder mehrere Schlüssel für jede Maschine einrichten, die "nach Hause anrufen" dürfen.Auf Computer A finden Sie vielleicht die
-n
,-N
und-T
Optionen nützlich , um es von lokalem Eingang zu trennen (so ist es im Hintergrund laufen kann), nicht versuchen , einen Remote - Befehl ausgeführt werden soll, nur den Tunnel öffnen und keine tty erstellen.Die meisten normalen Methoden zum Erzeugen eines Daemons funktionieren beim Einrichten eines solchen Netzwerktunnels nicht sehr gut. Ein Problem in der Netzwerkkonnektivität würde dazu führen, dass versucht wird, die Mauer niederzuschlagen, um durchzukommen. Eine einfache Schleife mit einem Schlaf zum Warten sollte den Trick tun. Zehn Minuten sind eine nette Zahl, weil sie das Netzwerk und die Protokolldateien nicht mit Versuchen überfluten, wenn es ein Problem gibt (wie z. B. Computer B , der offline ist), aber Sie trotzdem ziemlich schnell zurückbekommen, wenn die Verbindung unterbrochen wird.
Ein solches Skript kann beim Booten gestartet werden
/etc/rc.local
. Ihre erste Änderung in die Maschine einzuloggen wird etwa 10 Minuten nach dem Start Computer A Stiefel.quelle
/etc/ssh/sshd_config