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:
- Angenommen
export 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 Kommandozeilessh -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 vomsshd
(Server). Legen Sie einexxx.conf
Datei ab,/etc/ssh/sshd_config.d/xxx.conf
die enthältAuthorizedKeysFile ~/.config/ssh/authorized_keys
, entweder als globale Anweisung oder in einem Block pro BenutzerMatch user xxx
. In jedem Fall müssten Sie hart codieren,~/.config/ssh
da es nicht erweitert werden kannXDG_CONFIG_HOME
.
Für UserKnownHostsFile
und IdentityFile
können Sie sie alternativ auch in Ihrem festlegen "$SSH_HOME"/config
oder eine Konfigurations-Override-Datei in ablegen, die /etc/ssh/ssh_config.d/xxx.conf
die 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! ;-)