In /etc/ssh/sshd
für Computer B eingestellt:
AllowTcpForwarding yes
TCPKeepAlive yes
Von Computer A :
$ ssh -R 2222:localhost:22 ip.of.computer.b
Vom Computer B :
$ ssh localhost -p 2222
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.
#/bin/sh
while true; do
sleep $((60*10))
ssh -nNT -R 2222:localhost:22 ip.of.computer.b
done
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.