3

我正在尝试通过使用计算机-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

我收到以下错误: 不会分配伪终端,因为标准输入不是终端。

4

1 回答 1

2

尝试这个:

Host computerC
  ProxyCommand ssh computerB nc %h %p

nc如果(netcat) 具有不同的名称或不在计算机 B 上的默认 PATH 中,您可能必须更改(netcat)。


解释:

ssh -t computerB ssh computerC通过 ssh 将您登录到计算机 B,然后从计算机 B 通过 ssh 将您登录到计算机 C。对于每一跳——从 A 到 B,然后从 B 到 C——ssh 建立一个到端口 22 的 TCP 连接,加密数据流经该端口。

ProxyCommand 禁用打开 TCP 连接,而是指定自定义命令来打开连接。连接的另一端应该有一个 ssh 守护进程,它可以与 ssh 客户端通信——shell 对它根本没有用处。

于 2013-04-19T08:51:50.883 回答