Bash

如何在 SSH 配置文件中使用變數

  • March 4, 2021

我想在我的 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 配置文件中的語法。

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