
好的,标题可能有点令人困惑,所以这就是我想要实现的目标。
我有多台 A 类型的机器可以连接到服务器 B。所有 A 类型的机器都会有某种 GUID。
我想要实现的是,机器 A 启动到服务器 B 的 SSH 隧道,然后某人可以从他的个人计算机通过服务器 B 连接到 A 类型的机器。
我可以像这样转发端口:
ssh -R 3000:localhost:22 server_host -p 58122
但这不太方便,因为我不得不猜测一个未使用的端口。
我宁愿有这样的东西:
ssh -R /tmp/nodes/${guid}.sock:localhost:22 server_host -p 58122
然后服务器 B 会输出如下内容:
ssh /tmp/nodes/${guid}.sock
但第一个命令总是返回这个:
Warning: remote port forwarding failed for listen path /tmp/guid.sock
好像无法创建套接字。ssh 客户端连接到服务器 B,但无法为其自己的 ssh 端口启动套接字。
主要目标是能够从节点机器 A 到服务器 B 创建 SSH 隧道。原因是这些机器隐藏在网络后面,并且没有其他实际方法可以从服务器 B 到节点 A 创建隧道。
我甚至不确定 ssh 是否可以直接连接到套接字,所以如果有端口转发的替代方法,我会很高兴知道。
答案1
您可以尝试使用 ssh 隧道和 socat。
https://gist.github.com/ljjjustin/585e817d1d7ce4eb75b87076e5b7aa7e
这里有一个脚本可以启发您。