ssh ProxyCommand不像常规命令那样工作

时间:2013-04-19 00:33:15

标签: ssh tunneling ssh-tunnel

我正在尝试通过计算机-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不是终端。

1 个答案:

答案 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根本没用。