Właśnie dowiedziałem się o funkcji ControlMaster / ControlPath w OpenSSH, która pozwala używać jednego połączenia SSH do uruchamiania wielu terminali.
Ponieważ często używam SSH do przekierowania portów, aby uzyskać zaszyfrowane i uwierzytelnione sesje VNC, od razu zrozumiałem, że nie można dodać przekierowania portów do zdalnego serwera, z którym masz już ustanowione połączenie. To jest do bani.
Czasami później odkryłem, że możesz obejść to ograniczenie, wpisując ~ C w uruchomionej sesji terminalu SSH. Otwiera to wiersz poleceń, który pozwala dodawać lub usuwać przekierowania portów.
Moje pytanie brzmi teraz: jak mogę dodać przekierowanie portów do istniejącej sesji SSH, która korzysta z funkcji ControlMaster / ControlPath, bez potrzeby dostępu do sesji terminala w tej sesji SSH. Potrzebuję tego, aby włączyć mój skrypt, który uruchamia bezpieczne tunelowane połączenie VNC, abym mógł dodać, a następnie usunąć przekierowanie portów.
(Wiem, że mógłbym użyć terminalowego multipleksera, takiego jak GNU Screen lub tmux, właściwie już to robię. Ale podoba mi się pomysł użycia tylko jednej sesji SSH z powodów serwerowych).
Odpowiedzi:
Właściwie to całkiem proste. Po prostu dodaj ctl_cmd
-O forward
do istniejącego polecenia, w ten sposób:staje się:
ssh
Strona podręcznika omawia-O ctl_cmd
opcję:To, oczywiście, zakłada pan albo włączone
ControlMaster yes
w~/ssh/config
pliku lub-M
w wierszu poleceń.źródło