OpenSSH 在搜尋 ssh 設定檔時不考慮 $HOME

OpenSSH 在搜尋 ssh 設定檔時不考慮 $HOME

我正在編寫一些整合測試,用於測試伺服器之間的 SSH 連線。

目前測試是在人們的筆記型電腦上運行的。為了不打擾用戶(運行測試的用戶),~/.ssh/config我創建了一個臨時目錄,其中包含專門./tmp/.ssh/config用於測試的定製檔案。然後我導出HOME=/path/to/tmp。不幸的是,我發現 openssh 不用於$HOME搜尋 ssh 設定或識別檔。

如果我直接透過 ssh 連接到主機,這是可以的,因為我可以使用該-F標誌明確設定我的配置。但是,如果我透過堡壘進行 ssh 連接並且有一個 proxycommand,ssh則不會將該設定檔傳遞給我的 proxycommand。因此,如果我的自訂 ssh 配置使用不同的預設使用者名稱(例如),則該配置將不會用於 proxy 命令。

我也「可以」修改 proxycommand (以 ssh 配置文件作為參數),但是,我想知道是否可以讓 openssh 通過使用在不同位置查找配置/身份文件環境變量(無需將配置文件傳遞給每個後續下游命令) 。我可以使用更改我的 ssh-agent SSH_AUTH_SOCK,因此我希望也能夠更改設定檔目錄。

答案1

根據原始碼,ssh從密碼檔案中取得主目錄,如果不成功,則從HOME環境變數中取得。

Include您可以做的就是向每個用戶添加~/.ssh/config,例如~/tmp/user/.ssh/config

如果要包含的文件不存在,ssh不會抱怨。但如果它存在並且可讀,它將包含它。這應該允許您進行測試而不會過多地弄亂他們的文件。

請注意,它會帶來安全風險。如果您沒有很好地保護這些路徑,任何知道這些路徑的人都可以為其他使用者註入本地配置。

相關內容