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

标签 ssh tunneling ssh-tunnel

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

相关文章:

ssh - 如何在dataproc上使用SOCKS防止 "connection refused"?

java - 使用 RMI 的 HTTP 隧道安全性

c - 如何在 C linux 套接字中包含 IP 数据包?

oracle-sqldeveloper - 在Oracle SQL Developer中使用内置的SSH,而不是先使用PuTTY

ssh - 如何在cPanel中为特定子域的用户提供SSH访问权限

macos - OpenGL 应用程序在我的 Mac 上失败,在 virtualbox 上运行

ssl - HTTPS Web(仅)代理

mysql - TYPO3 和 MySQL 数据库在不同的服务器上

linux - 如何建立双向 SSH 隧道

python - 在 SSH 控制台中 print() 之后输入() 时出现 EOFError