Назад | Перейти на главную страницу

мультиплексирование ssh через переадресацию портов

Я пытаюсь создать настройку, в которой можно было бы использовать ssh для определенного порта на localhost, а затем получить отправлено на удаленный сервер и в оболочку без необходимости вводить учетные данные (нет, секретный ключ, к сожалению, не вариант).

Пока что я настроил мультиплексирование ssh с ControlMaster, поэтому я могу запустить удаленную оболочку ssh без каких-либо запросов из локальной оболочки.

Есть ли способ использовать этот сокет, когда новый клиент подключается к определенному порту на localhost?

Я пробовал разные комбинации с -D, -R и -S, безуспешно. Возможна ли такая установка на Linux или Mac?

редактировать:

Я не против ввода учетных данных localhost в любой момент, но я стараюсь избегать ввода удаленных учетных данных для всех подключений, следующих за начальным управляющим соединением.


localhost        ---->    localhost:2222             ---->   remote:22
  $ ssh -p 2222             forward to remote                  $ _ :)
                            using an existing 
                            control socket

Вы всегда можете перенаправить (вперед) localhost:2222 localhost:22 используя iptables, например.

iptables -t nat -A PREROUTING -p tcp --dport 2222 -j REDIRECT --to-port 22

Видеть псевдоним порт / перенаправление порта на другой локальный порт или это поиск Гугл. Это, помимо ControlMaster auto, не должны требовать дополнительных паролей (локальных или удаленных).

Однако мне это кажется ненужным и заставляет задуматься, нет ли у вас проблемы XY.

Если вам нужна базовая оболочка, вы можете использовать netcat для создания оболочки, прослушивающей определенный порт на удаленном сервере, и использования перенаправления портов на локальном ssh для создания туннелей:

На пульте:

while true ; do netcat -l -p 15000 -e /bin/bash ; done

На местном:

ssh -L 5000:remoteip:15000 user@server
netcat localhost 5000

Вы не сможете использовать некоторые команды (поведение vim веселая), но он работает для большинства команд. Каждый раз, когда соединение закрывается, цикл порождает новый.