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

Можно ли подключиться к другому клиенту через обратный SSH-туннель через другой поддомен?

Поэтому, когда вы используете обратный туннель SSH и у вас только один клиент, его будет достаточно просто запустить ssh -R 1999:localhost:22 remote@server а потом ssh -p 1999 localhost на сервере. Но как насчет того, чтобы у вас было несколько клиентов?

Можно ли создать поддомен с подстановочными знаками для SSH, чтобы клиент мог подключаться к единому порту, например ssh -R 1999:localhost:22 remote@user1.server, ssh -R 1999:localhost:22 remote@user2.server и на сервере мы можем получить доступ к разным клиентам с помощью ssh -p 1999 user1.server, ssh -p 1999 user2.server.

Вы не можете проксировать несколько адресатов через одно соединение ip + порт, поскольку клиенты SSH не указывают, с каким сервером они хотят разговаривать. То, что вы предлагаете, безусловно, достижимо (путем назначения новых адресов для каждого имени) со значительными административными издержками.

Но это, вероятно, нежелательно. Если все должны подключаться к перенаправленным машинам через этот сервер (называемый бастион) в любом случае у вас есть больше возможностей, чем просто порты.

Например, вы можете разместить подключения к перенаправленным машинам в папку на сервере:

ssh -R /minion/user1.example:localhost:22 user1.example@bastion.example
ssh -R /minion/user2.example:localhost:22 user2.example@bastion.example
# or even
ssh -R /minion/$(hostname -f):localhost:22 $(hostname -f)@bastion.example

Поскольку каждый сокет назван в честь сервера, к которому он подключен, для всех работает одна конфигурация:

Host *.example
  ProxyCommand ssh bastion.example netcat -U /chroot/minion/%h

И команда для его использования выглядит чистой и простой:

ssh user@user1.example
ssh user@user2.example

Видеть man 5 ssh_config для объяснения по %h и %n, один из которых вы, вероятно, захотите использовать. Также обратите внимание на StreamLocalBindUnlink вариант, так как вы не хотите, чтобы установка завершилась ошибкой, если сокеты уже существуют.