Автоматическая пересылка в обратный туннель
У меня есть 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
).