OpenSSH は XDG 仕様に準拠するためにユーザー固有のファイルの場所を変更します

OpenSSH は XDG 仕様に準拠するためにユーザー固有のファイルの場所を変更します

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.confAuthorizedKeysFile ~/.config/ssh/authorized_keysMatch user xxx~/.config/sshXDG_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'

心臓の弱い人には向きません...また、お勧めもしません。

でも、それはできる終わり! ;-)

関連情報