Ssh
搜尋 ssh 配置文件時,OpenSSH 不尊重 $HOME
我正在編寫一些集成測試,用於測試伺服器之間的 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
不會報錯。但如果它存在並且可讀,它將包含它。這應該允許您進行測試而不會過多地弄亂他們的文件。請注意,它會帶來安全風險。如果您不能很好地保護它們,任何知道這些路徑的人都可以為其他使用者注入本地配置。