简短的问题:

简短的问题:

简短的问题:

如何通过 ssh 连接到本地 unix 套接字 (~/test.sock)?该套接字转发到实际的 ssh 服务器。明显的不起作用,我找不到任何文档:

public> ssh /home/username/test.sock
"ssh: Could not resolve hostname: /home/username/test.sock: Name of service not known"

长问题:

我试图解决的问题是从我的 ( public) 大学服务器连接到我的 ( local) PC,该 PC 位于 NAT 后面且对公众不可见。

规范的解决方案是创建一个 ssh 代理/local隧道public

local> ssh -NR 2222:localhost:22 public

但这是不可能的,因为政府禁止创建端口。所以我考虑过使用UNIX套接字来代替,它的工作原理是:

local> ssh -NR /home/username/test.sock:localhost:22 public

但现在,我怎样才能用 ssh 连接到它呢?

答案1

你应该能够利用socat代理命令 选项对于 ssh。 ProxyCommand 将 ssh 客户端配置为使用代理进程与服务器进行通信。socat之间建立双向通信标准输入/标准输出socat和 ssh 客户端)和你的UNIX套接字

ssh -o "ProxyCommand socat - UNIX-CLIENT:/home/username/test.sock" foo

答案2

我已提交拉取请求以使其工作,但尚未合并:

https://github.com/openssh/openssh-portable/pull/162

答案3

我偶然发现https://medium.com/@dperny/forwarding-the-docker-socket-over-ssh-e6567cfab160其中讨论了从 OpenSSH 6.7 开始就可以实现套接字转发。

给出的例子是:

ssh -nNT -L $(pwd)/docker.sock:/var/run/docker.sock user@someremote

所以不再需要 socat 了。

相关内容