ssh ProxyCommand 不像常规命令那样工作
Posted
技术标签:
【中文标题】ssh ProxyCommand 不像常规命令那样工作【英文标题】:ssh ProxyCommand not working like regular command 【发布时间】:2013-04-12 07:11:48 【问题描述】:我正在尝试使用计算机 B 上的密钥通过计算机 B 隧道从计算机 A SSH 到计算机 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】:试试这个:
Host computerC
ProxyCommand ssh computerB nc %h %p
如果 nc
(netcat) 有不同的名称或不在计算机 B 上的默认 PATH 中,您可能需要更改它。
解释:
ssh -t computerB ssh computerC
通过 ssh 将您登录到计算机 B,然后从计算机 B 通过 ssh 将您登录到计算机 C。对于每一跳——从 A 到 B,然后从 B 到 C——ssh 建立一个 TCP 连接到端口 22,加密数据通过该端口流动。
ProxyCommand 禁用打开 TCP 连接,而是指定自定义命令来打开连接。连接的另一端应该有一个 ssh 守护进程,它可以与 ssh 客户端通信——shell 对它根本没有用处。
【讨论】:
以上是关于ssh ProxyCommand 不像常规命令那样工作的主要内容,如果未能解决你的问题,请参考以下文章
相当于 OpenSSH ProxyCommand 的 PuTTY 配置