OpenSSH ändert den Speicherort benutzerspezifischer Dateien, um der XDG-Spezifikation zu entsprechen

OpenSSH ändert den Speicherort benutzerspezifischer Dateien, um der XDG-Spezifikation zu entsprechen

Ist es möglich, den Standardspeicherort der benutzerspezifischen Dateien von OpenSSH ( ~/.ssh) zu ändern?

Ich habe gefundenXDG-Basisverzeichnisspezifikationund ich habe mich gefragt, ob es möglich wäre, OpenSSH damit kompatibel zu machen?

Antwort1

Es ist nicht möglich.

Dies wurde hervorgerufen in Fehler 2050: Unterstützung der XDG-basierten Verzeichnisspezifikation, dessen Status "CLOSED WONTFIX" lautet. Darauffolgende Anfragen von Benutzern wurden nach folgender finaler Antwort aus dem Jahr 2012 nicht mehr beantwortet:

OpenSSH (und sein Vorgänger ssh-1.x) verwenden seit 17 Jahren ~/.ssh. Dieser Speicherort ist in die Gehirne unzähliger Benutzer, Millionen gut funktionierender Konfigurationen und unzähliger Tools eingebrannt.

Das Ändern des Speicherorts unserer Konfiguration würde eine sehr starke Begründung erfordern und es reicht nicht aus, einem Trend von Desktop-Anwendungen zu folgen (zu denen OpenSSH nicht gehört).

Einen weiteren Grund hierfür nennt Arch Linux in seinem Statusbericht XDG-Basisverzeichnis:

Wird von vielen SSH-Daemons und -Clients wie DropBear und OpenSSH als vorhanden angenommen.

Antwort2

Theoretischkönnte, da OpenSSH Ihnen einige Optionen bietet, um alternative Pfade für einige (und möglicherweise alle) der üblichen Dateien in anzugeben ~/.ssh.

Aber seien Sie sich bewusst, dass diessehrunkonventionell, wird für jede Datei einen anderen Ansatz haben und könnte Superuser-Privilegien erfordern, um Einstellungen sowohl für den SSH-Client als auch für den Server zu ändern. Es wird sicherlich nichtkomfortabel, und es kann eine Reihe von Sonderfällen geben, in denen es fehlschlägt.

Versuchen wir es doch einmal als lustige Übung:

  • Angenommenexport SSH_HOME=${XDG_CONFIG_HOME:-$HOME/.config}/ssh
  • ~/.ssh/config: kann über die Kommandozeile geändert werdenssh -F "$SSH_HOME"/config
  • ~/.ssh/id_{ed25519,rsa}{,.pub}: auch Kommandozeile ssh -i "$SSH_HOME"/id_ed25519(oder -o IdentityFile="$SSH_HOME"/id_ed25519). Kann mehrfach angegeben werden, um unterschiedliche Tasten auszuprobieren.
  • ~/.ssh/known_hosts:ssh -o UserKnownHostsFile="$SSH_HOME"/known_hosts
  • ~/.ssh/authorized_keys: Dies erfordert Hilfe vom sshd(Server). Legen Sie eine xxx.conf Datei ab, /etc/ssh/sshd_config.d/xxx.confdie enthält AuthorizedKeysFile ~/.config/ssh/authorized_keys, entweder als globale Anweisung oder in einem Block pro Benutzer Match user xxx. In jedem Fall müssten Sie hart codieren, ~/.config/sshda es nicht erweitert werden kann XDG_CONFIG_HOME.

Für UserKnownHostsFileund IdentityFilekönnen Sie sie alternativ auch in Ihrem festlegen "$SSH_HOME"/configoder eine Konfigurations-Override-Datei in ablegen, die /etc/ssh/ssh_config.d/xxx.confdie Option(en) enthält. Es gilt jedoch dieselbe Einschränkung für die Festcodierung ~/.config/ssh.

Zusammenfassend:

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'

Nichts für schwache Nerven … und auch nicht zu empfehlen.

Aber hey, esdürfengetan werden! ;-)

verwandte Informationen