我正在尝试通过计算机-B上的密钥通过计算机B进行隧道传输,从计算机A到计算机C。我已经从计算机A到计算机B以及从计算机B到计算机C共享密钥
这适用于计算机A连接到计算机C而无需密码或干预:
ssh -t computerB ssh computerC
如果我在计算机A上的ssh_config中输入相同的命令,它就会挂起
Host = computerC
ProxyCommand = ssh -t computerB ssh computerC
我收到以下错误: 不会分配伪终端,因为stdin不是终端。
答案 0 :(得分:2)
试试这个:
Host computerC
ProxyCommand ssh computerB nc %h %p
如果它有不同的名称或者不在计算机B上的默认路径中,则可能必须更改nc
(netcat)。
说明:
ssh -t computerB ssh computerC
通过ssh登录到computerB,然后从computerB通过ssh登录到computerC。对于每一跳---从A到B,然后从B到C --- ssh建立到端口22的TCP连接,加密数据在端口22上流动。
ProxyCommand禁用打开TCP连接,而是指定用于打开连接的自定义命令。连接的另一端应该在ssh客户端可以与之交谈的另一端有一个ssh守护进程 - 一个shell根本没用。