通过 unix 套接字建立 ssh 隧道并使用 ssh 连接它

通过 unix 套接字建立 ssh 隧道并使用 ssh 连接它

好的,标题可能有点令人困惑,所以这就是我想要实现的目标。

我有多台 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

这里有一个脚本可以启发您。

相关内容