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

Перенаправить SSH через туннель SSH

Моя ситуация :

Я (localhost) -> Сервер A (ip: 100.100.100.100) => (сервер B (ip: 192.168.25.100), сервер ....)

Я могу подключиться к серверу по SSH, так как у него настоящий IP-адрес, если я затем хочу подключиться к серверу b, я бы использовал ssh-сервер b с его IP-адресом (192.168.25.100)

пример:

с моего компьютера:

ssh user@100.100.100.100

затем в 100.100.100.100,

ssh user@192.168.25.100

это приведет меня к серверу B с ssh

что, если я хочу подключиться к серверу b напрямую? Как я могу это сделать?

пример:

из моего oc:

ssh@192.168.25.100

я пробовал следующее:

ssh -L 22:localhost:22 user@100.100.100.100

безуспешно

Ваша проблема заключается в привязке слушателя к localhost: 22; sshd уже слушает это. Туннелирование ssh-соединения через ssh-соединение полностью законно, и я делаю это постоянно, но вам нужно выбрать неиспользуемые порты для ваших прослушивателей пересылки.

Пытаться

me% ssh user@100.100.100.100 -L 2201:192.168.25.100:22

затем

me% ssh localhost -p 2201

Вы должны оказаться на сервере B (если что-то еще не привязано ко мне: 2201, в этом случае выберите другой порт).

Вам не нужно использовать переадресацию портов ssh на ssh на внутренний компьютер через прокси. Вы можете использовать функцию ssh для выполнения команды на первом сервере, к которому вы подключаетесь, чтобы использовать ssh на третьем компьютере.

ssh -t user@100.100.100.100 ssh user@192.168.25.100

В -t опция заставляет ssh выделить псевдо-tty, чтобы вы могли запустить интерактивную команду.

Это также может работать с ключами ssh. Если у вас есть личный и открытый ключи на машине A и ваш открытый ключ в файлах авторизованных ключей на машинах B и C, то вы можете использовать -A возможность перенаправить соединение агента аутентификации.

Начиная с OpenSSH 7.3 (конец 2016 г.), самым простым способом является ProxyJump настройка. В твоем ~/.ssh/config:

Host B
  ProxyJump A

Или в командной строке, -J B.

Я использовал другое решение. Я использовал ProxyCommand вариант (здесь в ~/.ssh/config):

Host myinsidehost1 myinsidehost2 myinsidehost3
ProxyCommand ssh externalhost ssh %h sshd -i

При этом не создается туннель между портами, вместо этого туннелируется ssh с использованием стандартного stdin / out. Недостаток этого метода состоит в том, что на самом деле требуется три соединения ssh для аутентификации. Но для подключения к внутреннему хосту вы просто набираете:

ssh myinsidehost2

... поэтому вам не нужно заботиться о выборе IP-адреса для этого туннеля.

согласно странице руководства ssh, ProxyCommand - правильный метод

синтаксис:

ProxyCommand ssh -W %h:%p user@jumphost 2> /dev/null

Пока ProxyJump уже упоминалось, мне гораздо проще использовать "jump host" (-J) аргумент командной строки:

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

ssh -J user1@100.100.100.100 user2@192.168.25.100

Вышеупомянутая команда устанавливает соединение с 100.100.100.100 как user1, затем оттуда "перескакивает" на 192.168.25.100 как user2.