Моя ситуация :
Я (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.