Автоматическая пересылка в обратный туннель
У меня есть Raspberry Pi (удаленный), который находится за NAT. Чтобы получить к нему доступ с моего домашнего компьютера (локального), я подключаю его к своему ASW-серверу (серверу) через обратный туннель, как описано в различных публикациях.
Удаленное подключение к серверу:
ssh -f -N -T -R22222:localhost:22 -i ssh-ec2/ec-key.pem ec2-user@xxx.xxx.xxxx.xxx
Затем я могу подключиться к своему ASW-серверу через SSH, и после входа в систему я могу подключиться к Raspberry через:
ssh -p 22222 pi@localhost
Это все работает отлично.
Моя проблема сейчас в том, что я хочу сделать удаленный сеанс с intellij из моего локального непосредственно в мой удаленный Raspberry. Для этого мне нужно подключиться к моему серверу через SSH, а затем вручную ввести снова подключенный к моему пульту.
Как я могу настроить туннель, чтобы я мог подключиться к своему серверу, но напрямую к порту 22222? Я попробовал следующее с моей локальной машины, но время соединения истекло:
ssh -l 9999:localhost:22222 ec2-user@52.201.173.131 -i c:/privatekey.pem
Есть предложения, что я делаю не так? Извините, я совсем новичок в Linux, поэтому извиняюсь, если это глупый вопрос.
1 ответ
Когда вы подключаетесь с сервера ASW, вы подключаетесь к localhost, Обратите внимание, что man 1 ssh говорит:
-R [bind_address:]port:host:hostport[...]
По умолчанию прослушивающий сокет на сервере будет связан только с интерфейсом обратной связи. Это может быть отменено указанием
bind_address, Пустойbind_addressили адрес*, указывает, что удаленный сокет должен прослушивать все интерфейсы. Указание пультаbind_addressбудет успешным, только если серверGatewayPortsопция включена (см.sshd_config(5)).
затем man 5 sshd_config говорит:
GatewayPortsУказывает, разрешено ли удаленным узлам подключаться к портам, перенаправленным для клиента. По умолчанию,
sshd(8)связывает переадресацию удаленных портов с адресом обратной связи. Это предотвращает подключение других удаленных хостов к перенаправленным портам.GatewayPortsможет использоваться для указания того, чтоsshdдолжно позволять перенаправлениям удаленных портов связываться с адресами без обратной связи, что позволяет другим узлам подключаться. Аргумент может бытьnoсделать так, чтобы переадресация удаленных портов была доступна только локальному хосту,yesзаставить переадресацию удаленных портов связываться с подстановочным адресом, илиclientspecifiedпозволить клиенту выбрать адрес, с которым связана переадресация. По умолчаниюno,
Чтобы это работало, вы должны сделать что-то вроде этого:
- включают
GatewayPorts clientspecifiedвsshd_configна сервере (и перезапустите / перезагрузите демон, см. Есть ли резервная копия дляsshконфигурации, откатиться на ошибку? Перезагружаетсяsshdвсегда поддерживать существующие сессии? и перезапустите SSH на машине, где SSH является единственным режимом доступа); - соединить с
ssh … -R :22222:localhost:22 …из малины (обратите внимание на первый:, это отделяет пустоеbind_addressотport).