Ich habe gerade von der ControlMaster / ControlPath-Funktion von OpenSSH erfahren, mit der Sie eine einzige SSH-Verbindung verwenden können, um mehrere Terminals auszuführen.
Da ich häufig SSH verwende, um die Portweiterleitung zu verwenden, um verschlüsselte und authentifizierte VNC-Sitzungen zu erhalten, habe ich sofort erkannt, dass Sie einem Remoteserver, zu dem Sie bereits eine Verbindung hergestellt haben, keine Portweiterleitungen hinzufügen können. Das ist scheiße.
Manchmal fand ich später heraus, dass Sie diese Einschränkung umgehen können, indem Sie ~ C in einer laufenden SSH-Terminalsitzung eingeben. Dies öffnet eine Befehlszeile, in der Sie Portweiterleitungen hinzufügen oder entfernen können.
Meine Frage lautet nun: Wie kann ich Portweiterleitungen zu einer vorhandenen SSH-Sitzung hinzufügen, die die ControlMaster / ControlPath-Funktion verwendet, ohne auf eine Terminalsitzung innerhalb dieser SSH-Sitzung zugreifen zu müssen? Ich benötige dies, um mein Skript zu aktivieren, das eine sichere getunnelte VNC-Verbindung startet, damit ich seine Portweiterleitungen hinzufügen und später entfernen kann.
(Ich weiß, dass ich einen Terminal-Multiplexer wie GNU Screen oder tmux verwenden könnte, eigentlich mache ich das schon. Aber ich mag die Idee, aus mehreren Gründen nur eine SSH-Sitzung zu verwenden.)
Antworten:
Das ist eigentlich ganz einfach. Fügen
-O forward
Sie einfach den Befehl ctl_cmd zu Ihrem vorhandenen Befehl hinzu.wird:
In der
ssh
Manpage wird die-O ctl_cmd
Option erläutert :Dies setzt natürlich voraus, dass Sie entweder
ControlMaster yes
in Ihrer~/ssh/config
Datei oder-M
in der Befehlszeile aktiviert haben .quelle