OpenSSH ( ) のユーザー固有のファイルのデフォルトの場所を変更することは可能ですか~/.ssh
?
私は見つけたXDG ベースディレクトリ仕様OpenSSH をこれに準拠させることは可能でしょうか?
答え1
不可能です。
これは、 バグ 2050: XDG ベースのディレクトリ仕様をサポート、ステータスは「CLOSED WONTFIX」です。ユーザーによる以下の要求は、2012 年の最終回答以降、回答されなくなりました。
OpenSSH (およびその祖先である ssh-1.x) は、17 年間にわたって ~/.ssh を使用してきました。この場所は、無数のユーザーの頭の中に、何百万もの構成や無数のツールに深く根付いています。
設定の場所を変更するには非常に強力な正当化が必要であり、デスクトップ アプリケーションのトレンド (OpenSSH はこれに該当しません) に従うだけでは不十分です。
Arch Linuxはステータスレポートでもう一つの理由を追加した。 XDG ベースディレクトリ:
DropBear や OpenSSH などの多くの ssh デーモンやクライアントに存在すると想定されます。
答え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'
心臓の弱い人には向きません...また、お勧めもしません。
でも、それはできる終わり! ;-)