Linux

SSH 連接到 UNIX 套接字而不是主機名

  • August 20, 2020

簡短的問題:

如何通過 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,它位於 NAT 後面並且對公眾不可見。

規範的解決方案是創建一個 ssh 代理/隧道到localon public

local> ssh -NR 2222:localhost:22 public

但這是不可能的,因為政府禁止創建埠。所以我考慮過使用 UNIX 套接字,它可以工作:

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

但是現在,我怎樣才能用 ssh 連接到它呢?

您應該能夠為 ssh使用socatProxyCommand選項。ProxyCommand 將 ssh 客戶端配置為使用代理程序與您的伺服器通信。在STDIN/STDOUT(和 ssh 客戶端)和您的UNIX 套接字之間建立雙向通信。 socat``socat

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

我已經送出了拉取請求來完成這項工作,但它還沒有被合併:

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

引用自:https://unix.stackexchange.com/questions/451788