是否可以修改 OpenSSH ( ) 使用者特定檔案的預設位置~/.ssh
?
我找到了XDG基目錄規範我想知道是否有可能使 OpenSSH 相容於它?
答案1
這是不可能的。
這被喚起於 Bug 2050:支援 XDG basedir 規範,其狀態為“CLOSED WONTFIX”。 2012年最終答覆後,用戶提出的以下訴求不再得到答覆:
OpenSSH(及其祖先 ssh-1.x)使用 ~/.ssh 已有 17 年的歷史。這個位置已經融入了無數用戶的大腦、數以百萬計的愉快工作的配置和無數的工具中。
更改配置的位置需要非常有力的理由,並且跟隨桌面應用程式的趨勢(OpenSSH 不包括在內)是不夠的。
Arch Linux 在其狀態報告中又增加了一個原因 XDG 基本目錄:
假設許多 ssh 守護程式和用戶端(例如 DropBear 和 OpenSSH)都存在。
答案2
理論上你可以,因為 OpenSSH 為您提供了一些選項來指定~/.ssh
.
但請注意,這是非常非常規,每個檔案都有不同的方法,並且可能需要超級使用者權限才能更改 ssh 用戶端和伺服器的設定。肯定不會是方便的,並且它可能有許多失敗的極端情況。
也就是說,讓我們試著將其作為一個有趣的練習:
- 假設
export SSH_HOME=${XDG_CONFIG_HOME:-$HOME/.config}/ssh
~/.ssh/config
: 可以透過命令列更改ssh -F "$SSH_HOME"/config
~/.ssh/id_{ed25519,rsa}{,.pub}
: 也是命令列ssh -i "$SSH_HOME"/id_ed25519
(或-o IdentityFile="$SSH_HOME"/id_ed25519
)。可以多次指定來嘗試不同的鍵。~/.ssh/known_hosts
:ssh -o UserKnownHostsFile="$SSH_HOME"/known_hosts
~/.ssh/authorized_keys
:這需要sshd
(伺服器)的幫助,將檔案放入包含xxx.conf
中,作為全域語句或每個使用者區塊。無論如何,您都必須進行硬編碼,因為它無法擴展。/etc/ssh/sshd_config.d/xxx.conf
AuthorizedKeysFile ~/.config/ssh/authorized_keys
Match user xxx
~/.config/ssh
XDG_CONFIG_HOME
對於UserKnownHostsFile
和IdentityFile
,您也可以在您的 中設定它們,或刪除包含選項的"$SSH_HOME"/config
配置覆蓋文件,但硬編碼也適用相同的限制。/etc/ssh/ssh_config.d/xxx.conf
~/.config/ssh
總結一下:
sudo tee /etc/ssh/sshd_config.d/00-xdg.conf <<< 'AuthorizedKeysFile ~/.config/ssh/authorized_keys'
export SSH_HOME=${XDG_CONFIG_HOME:-$HOME/.config}/ssh
alias ssh='ssh -F "$SSH_HOME"/config -i "$SSH_HOME"/id_ed25519 -o UserKnownHostsFile="$SSH_HOME"/known_hosts'
不適合膽小的人...也不推薦。
但是嘿,它能做完了! ;-)