Как настроить перенаправление портов после открытия ssh-соединения?

13

Я использую openssh как на клиенте, так и на сервере. Я знаю, что могу запустить ssh -Lили ssh -Rнастроить перенаправление портов через ssh. Однако, поскольку они являются параметрами командной строки, такие перенаправления должны быть записаны до открытия соединения.

Могу ли я настроить перенаправление портов на лету с помощью клиента командной строки ssh?

Когда я использовал PuTTYssh-клиент, я мог интерактивно настроить перенаправление портов, когда соединение уже было открыто, без прерывания или повторного подключения, поэтому я знаю, что это технически возможно.

Денилсон Са Майя
источник

Ответы:

24

Если вы используете командную строку SSH и не отключили функцию escape-символа , вы можете набрать ~Cпосле новой строки, чтобы открыть мини-консоль на клиенте ssh. Затем введите -L port:host:portили -R port:host:portили-D port , как вы бы в командной строке , чтобы добавить перенаправление или -KR portудалить перенаправление.

Более гибкий способ настройки перенаправлений без повторной проверки подлинности - запуск первого ssh-клиента в качестве главного ( -Mили -o ControlMaster=auto) и последующих клиентов в качестве подчиненных ( -Sили -o ControlMaster=auto). Подчиненные туннелируют через соединение, установленное мастером. Возможно, вам придется установить ControlPathв командной строке или в вашем ~/.ssh/config; см. описание параметров в справочной ssh_configстранице для получения дополнительной информации.

Жиль "ТАК - прекрати быть злым"
источник
В случае, если кто-то столкнется с ~C escape not available to multiplexex sessionsпроблемой, как я только что, не ищите ваше мастер-соединение. Вместо этого просто добавьте -O forwardв команду переадресации порта ssh, как в, ssh -O forward -nfL 1234:whatever:1234 theserverи это будет работать.
Патрик