Я понял, что Вы хотите только войти в систему компьютера C, не действительно туннелировать что-либо от до C. Так, это должно добиться цели:
ssh -t computer-b "ssh computer-c"
Вам, возможно, придется ввести пароли дважды, сначала для компьютера B и затем для компьютера C, но этого можно избежать при помощи аутентификации пары ключей ssh.
При использовании ssh ключей Вы могли бы генерировать новый ключ для машины B и использования это к соединению от до B. На машине B, можно добавить
command="ssh C" ssh-....
в ~/.ssh/authorized_keys
файл. Это означает, что каждый раз, когда Вы подключаете к B с этим ssh ключ, он выполнится ssh C
команда.
Я не знаю, работает ли это с scp.
Вы, вероятно, хотите использовать ProxyCommand SSH: http://benno.id.au/blog/2006/06/08/ssh_proxy_command
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
Вам нужен только ваш закрытый ключ. Компьютер А (ваш компьютер). Команда nc
будет действовать как прокси, в котором SSH будет шифровать проходящий трафик. Это включает аутентификацию. Распространять ваш закрытый ключ на несколько серверов - очень плохая идея (поскольку любой скомпрометированный сервер с вашим закрытым ключом в конечном итоге скомпрометирует ваш закрытый ключ).
Можно сопоставить несколько конечных компьютеров, используя Хост
. Отдельный компьютер или любой компьютер в определенной сети (например, 192.168.35.0/24
в приведенном выше примере) для прокси через компьютер Б. Он также служит псевдонимом.
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
примеры.