Есть ли способ с помощью одной команды установить 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
. Возьмем ваш исходный сценарий:
редактировать ~/.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
Примеры.