我正在尝试使用计算机 B 上的 key 通过计算机 B 建立隧道,从计算机 A 到计算机 C。我已经共享了从计算机 A 到计算机 B 以及从计算机 B 到计算机 C 的 key
这适用于计算机 A,无需密码或干预即可连接到计算机 C:
ssh -t computerB ssh computerC
如果我将相同的命令放入 computerA 上的 ssh_config 中,它就会挂起
Host = computerC
ProxyCommand = ssh -t computerB ssh computerC
我收到以下错误: 伪终端不会被分配,因为 stdin 不是终端。
最佳答案
试试这个:
Host computerC
ProxyCommand ssh computerB nc %h %p
如果 nc
(netcat) 有不同的名称或不在计算机 B 上的默认路径中,您可能需要更改它。
说明:
ssh -tcomputerB sshcomputerC
通过 ssh 让您登录到computerB,然后通过 ssh 从computerB 让您登录到computerC。对于每一跳——从 A 到 B,然后从 B 到 C——ssh 建立一个到端口 22 的 TCP 连接,加密数据通过该端口流动。
ProxyCommand 禁用打开 TCP 连接,而是指定自定义命令来打开连接。连接的另一端应该有一个 ssh 守护进程,ssh 客户端可以与之对话 --- shell 对它根本没有用处。
关于ssh ProxyCommand 不像常规命令那样工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16095353/