Програмно додавання переадресацій портів на сесії ControlMaster SSH


10

Я щойно дізнався про функцію ControlMaster / ControlPath OpenSSH, яка дозволяє використовувати одне SSH-з'єднання для запуску декількох терміналів.

Оскільки я часто використовую SSH для переадресації портів для шифрування та аутентифікації сеансів VNC, я одразу визнав, що ви не можете додавати переадресацію портів на віддалений сервер, до якого у вас вже встановлено з'єднання. Це смокче.

Інколи пізніше я дізнався, що ви можете обійти це обмеження, ввівши ~ C під час запущеного сеансу SSH-терміналу. Це відкриває командний рядок, який дозволяє додавати або видаляти переадресацію портів.

Моє запитання зараз: Як я можу додати переадресацію портів на існуючий сеанс SSH, який використовує функцію ControlMaster / ControlPath, без необхідності мати доступ до термінального сеансу всередині цього сеансу SSH. Мені потрібно це, щоб увімкнути мій сценарій, який запускає захищене тунельоване з'єднання VNC для мене, щоб додати та пізніше видалити його переадресацію портів.

(Я знаю, що міг би використовувати термінальний мультиплексор, такий як GNU Screen або tmux. Насправді це вже роблю. Але мені подобається ідея використовувати лише один сеанс SSH з серральних причин.)


1
Мене перехопить, коли ви знайдете спосіб зробити це, але підозрюю, що ви цього не зробите. Програматично керуючи властивостями сеансу SSH, ви насправді не є частиною, здається, величезною проблемою безпеки.
Калеб

1
Дурниці! Як програмне управління властивостями сеансу SSH створює величезну проблему безпеки? Рішення дійсно досить просте: serverfault.com/a/340361/93109
aculich

Питання тепер задається лише питанням про додавання переадресації портів, щоб воно краще відповідало прийнятої відповіді. Я запитав питання про те, як потім їх видалити тут: serverfault.com/q/457295/50950
aef

Відповіді:


10

Насправді це дуже просто. Просто додайте ctl_cmd -O forwardдо існуючої команди, таким чином:

ssh -M -L5555:localhost:22 remotehost

стає:

ssh -O forward -M -L5555:localhost:22 remotehost

Сторінка sshчоловіка обговорює -O ctl_cmdваріант:

-O ctl_cmd
        Control an active connection multiplexing master process.  When the -O option is
        specified, the ctl_cmd argument is interpreted and passed to the master process.
        Valid commands are: “check” (check that the master process is running), “forward”
        (request forwardings without command execution), “exit” (request the master to
        exit), and “stop” (request the master to stop accepting further multiplexing
        requests).

Звичайно, це передбачає, що ви або увімкнули ControlMaster yesсвій ~/ssh/configфайл або -Mкомандний рядок.


1
Чи можете ви спробуйте відповісти на відповідне запитання тут: serverfault.com/q/457295/50950
aef
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.