5

Я хочу переслать sshd (порт 22) на машине X, которая имеет не маршрутизируемый IP. Возможны следующие варианты пересылки: nc (что ужасно), inetd (требуется privs), iptables (требуется privs) и ssh. Поэтому я использую ssh, который имеет дополнительный бонус в виде предоставления зашифрованного туннеля.

У меня есть машина Y с публичным IP. Я хочу выставить X:22 как Y:8022.

X $ ssh -R8022:localhost:22 Y

Это работает, но порт 8022 связан с обратной связью:

Y $ netstat -ant
. . .  
tcp        0      0 127.0.0.1:8022          0.0.0.0:*               LISTEN

что означает, что я не могу подключиться с каких-либо посторонних машин. Поскольку GatewayPorts no в Y /etc/ssh/sshd_config , я не могу указать другой адрес привязки. Есть идеи?


Примечание: мне удалось заставить все работать, используя другой туннель от Y до Y:

Y $ ssh -g -L9022:localhost:8022 localhost

Это очень неэффективное решение: оно шифрует / дешифрует на localhost от порта 9022 до 8022, затем снова шифрует перед отправкой в X. Конечно, должен быть лучший способ?

2 ответа2

2

Почему вы используете обратную переадресацию портов?

На хосте Y:

ssh -f -N -q -L :8022:localhost:22 user@X должен добиться цели

-f: демонизировать

-N: нет команды

-q: тихо

-L: порт вперед

-: : используется для того, чтобы локальный порт через все интерфейсы, а не только локальный

0

Попробуйте запустить что-то вроде socat после подключения к Y?

ssh -R8022:localhost:22 Y socat tcp-listen:9022,fork,reuseaddr tcp:127.0.0.1:8022

Затем вы можете подключиться к X через Y:9022

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .