Bash
如何在 SSH 配置文件中使用變數
我想在我的 ssh 配置文件
$HOME
中替換/Users/Me
Host MyHost HostName 192.168.1.1 IdentitiesOnly yes User me IdentityFile "/Users/Me/.ssh/id_rsa"
但我得到了
no such identity: $HOME/.ssh/id_rsa: No such file or directory
至少在我的 Debian 10 系統上,
ssh_config(5)
手冊頁說:IdentityFile的參數可以使用波浪號語法來引用使用者的主目錄或 TOKENS 部分中描述的令牌。
因此,
$HOME
您可以將這IdentityFile
一行寫成:IdentityFile "~/.ssh/id_rsa"
或作為:
IdentityFile "%d/.ssh/id_rsa"
環境變數語法 (
${HOME}
) 支持僅與IdentityAgent
配置項一起提及,不與IdentityFile
. 根據OpenSSH 發行說明,在 OpenSSH 版本 8.4(2020-09-27 發布)中添加了環境變數語法支持和配置關鍵字CertificateFile
,而 Debian 10 只有 7.9 版本(反向移植了最新的安全修復程序)。ControlPath``IdentityFile
因此,在撰寫本文時,除非您使用的是非常新的 Linux 發行版,否則您的 OpenSSH 版本可能太舊,無法支持使用
${HOME}
SSH 配置文件中的語法。