OpenSSH 修改使用者特定文件的位置以符合 XDG 規範

OpenSSH 修改使用者特定文件的位置以符合 XDG 規範

是否可以修改 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.confAuthorizedKeysFile ~/.config/ssh/authorized_keysMatch user xxx~/.config/sshXDG_CONFIG_HOME

對於UserKnownHostsFileIdentityFile,您也可以在您的 中設定它們,或刪除包含選項的"$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'

不適合膽小的人...也不推薦。

但是嘿,它做完了! ;-)

相關內容