Linux
SSH 連接到 UNIX 套接字而不是主機名
簡短的問題:
如何通過 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 代理/隧道到
local
onpublic
:local> ssh -NR 2222:localhost:22 public
但這是不可能的,因為政府禁止創建埠。所以我考慮過使用 UNIX 套接字,它可以工作:
local> ssh -NR /home/username/test.sock:localhost:22 public
但是現在,我怎樣才能用 ssh 連接到它呢?
您應該能夠為 ssh使用
socat
ProxyCommand選項。ProxyCommand 將 ssh 客戶端配置為使用代理程序與您的伺服器通信。在STDIN/STDOUT(和 ssh 客戶端)和您的UNIX 套接字之間建立雙向通信。socat``socat
ssh -o "ProxyCommand socat - UNIX-CLIENT:/home/username/test.sock" foo
我已經送出了拉取請求來完成這項工作,但它還沒有被合併: