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

Туннелирование ssh-соединения через промежуточный компьютер с помощью одной команды

Есть ли способ с помощью одной команды установить ssh-соединение с моего компьютера A через компьютер B на компьютер C, чтобы у меня был доступ к оболочке на компьютере C?

Недостаток (который, кажется, исключает простую пересылку ssh-соединения с использованием параметра -L) заключается в том, что у меня есть пароль к учетной записи на компьютере B, а учетная запись на компьютере B имеет право подключаться к учетной записи на компьютере C, но У меня нет пароля к учетной записи на компьютере C.

Я понял, что вы хотите просто войти в систему на компьютере C, а не туннелировать что-либо из A в C. Итак, это должно помочь:

ssh -t computer-b "ssh computer-c"

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

Вероятно, вы захотите использовать ProxyCommand SSH: http://benno.id.au/blog/2006/06/08/ssh_proxy_command

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

command="ssh C" ssh-....

в ~/.ssh/authorized_keys файл. Это означает, что всякий раз, когда вы подключаетесь к B с помощью этого ключа ssh, он будет выполнять ssh C команда.

Я не знаю, работает ли это с scp.

Использовать ProxyCommand

Видеть man ssh_config. Я рекомендую использовать ProxyCommand. Возьмем ваш исходный сценарий:

  • Компьютер A (ваш компьютер)
  • Компьютер B (имя хоста прокси)
  • Компьютер C (доступен только через SSH с компьютера B)

редактировать ~/.ssh/config со следующим содержанием.

Host computerb
    HostName <hostname or IP of Computer B>

Host computerc 192.168.35.*
    ProxyCommand ssh computerb nc -w 180 %h %p

Теперь вы сможете прозрачно связаться с компьютером C., например.

ssh computerc

Достоинства этого метода

Более безопасный

Вам нужен только ваш закрытый ключ, чтобы он был на компьютере A (вашем компьютере). В nc команда будет действовать как прокси, в котором SSH будет шифровать проходящий трафик. Это включает аутентификацию. Распространять ваш закрытый ключ на несколько серверов - очень плохая идея (поскольку любой взломанный сервер с вашим закрытым ключом в конечном итоге скомпрометирует ваш закрытый ключ).

Соответствует нескольким направлениям

Можно сопоставить несколько конечных компьютеров, используя Host. Отдельный компьютер или любой компьютер в определенной сети (например, 192.168.35.0/24 в приведенном выше примере) для прокси через компьютер B. Он также служит псевдонимом.

ssh 192.168.35.27

В приведенном выше примере он будет прокси через компьютер B, чтобы получить IP-адрес.

Прокси-серверы гирляндной цепи

Используя этот метод, вы можете подключить столько автоматических прокси-серверов, сколько необходимо. например вы можете добавить Компьютер D который доступен только с компьютера C, и он будет работать прозрачно.

Host computerd
    ProxyCommand ssh computerc nc -w 180 %h %p

ssh computerd автоматически прокси через компьютер C и компьютер B в приведенном выше ssh_config Примеры.