Ssh

搜尋 ssh 配置文件時,OpenSSH 不尊重 $HOME

  • March 31, 2020

我正在編寫一些集成測試,用於測試伺服器之間的 SSH 連接。

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

如果我直接 ssh 到主機,這沒關係,因為我可以使用-F標誌顯式設置我的配置。但是,如果我通過堡壘 ssh-ing 並且我有一個代理命令,ssh則不會將該配置文件傳遞給我的代理命令。因此,如果我的定制 ssh 配置使用不同的預設使用者名(例如),該配置將不會用於代理命令。

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

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

你可以做的是Include給每個使用者添加一個~/.ssh/config,比如說~/tmp/user/.ssh/config

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

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

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