¿Es posible modificar la ubicación predeterminada de los archivos específicos de OpenSSH ( ~/.ssh
) del usuario?
he encontrado elEspecificación del directorio base XDGy me preguntaba si era posible hacer que OpenSSH fuera compatible con él.
Respuesta1
No es posible.
Esto fue evocado en Error 2050: compatibilidad con la especificación basada en XDG, cuyo estado es "CERRADO WONTFIX". Las siguientes demandas de los usuarios ya no fueron respondidas después de la siguiente respuesta final de 2012:
OpenSSH (y su antepasado ssh-1.x) tiene un historial de 17 años de uso de ~/.ssh. Esta ubicación está integrada en el cerebro de innumerables usuarios, millones de configuraciones que funcionan felizmente e innumerables herramientas.
Cambiar la ubicación de nuestra configuración requeriría una justificación muy fuerte y seguir una tendencia de aplicaciones de escritorio (de las cuales OpenSSH no lo es) no es suficiente.
Arch Linux añade un motivo más para esto en su informe de estado Directorio base XDG:
Se supone que está presente en muchos demonios y clientes ssh como DropBear y OpenSSH.
Respuesta2
Teóricamente tupodría, ya que OpenSSH le ofrece algunas opciones para especificar rutas alternativas para algunos (y posiblemente todos) los archivos habituales en ~/.ssh
.
Pero tenga en cuenta que esto esmuyno convencional, tendrá un enfoque diferente para cada archivo y puede requerir privilegios de superusuario para cambiar la configuración tanto del cliente ssh como del servidor. Ciertamente no lo seráconveniente, y puede tener varios casos extremos en los que falla.
Dicho esto, intentemos esto como un ejercicio divertido:
- Asumiendo
export SSH_HOME=${XDG_CONFIG_HOME:-$HOME/.config}/ssh
~/.ssh/config
: se puede cambiar a través de la línea de comandossh -F "$SSH_HOME"/config
~/.ssh/id_{ed25519,rsa}{,.pub}
: también línea de comandossh -i "$SSH_HOME"/id_ed25519
(o-o IdentityFile="$SSH_HOME"/id_ed25519
). Se puede especificar varias veces para probar diferentes claves.~/.ssh/known_hosts
:ssh -o UserKnownHostsFile="$SSH_HOME"/known_hosts
~/.ssh/authorized_keys
: esto requiere ayuda desshd
(el servidor), coloque unxxx.conf
archivo que/etc/ssh/sshd_config.d/xxx.conf
lo contengaAuthorizedKeysFile ~/.config/ssh/authorized_keys
, ya sea como una declaración global o en un bloque por usuarioMatch user xxx
. En cualquier caso, tendría que codificar~/.config/ssh
ya que no se puede expandirXDG_CONFIG_HOME
.
Para UserKnownHostsFile
y IdentityFile
, también puede configurarlos en su "$SSH_HOME"/config
, o colocar un archivo de anulación de configuración que /etc/ssh/ssh_config.d/xxx.conf
contenga las opciones, pero se aplica la misma restricción de codificación ~/.config/ssh
.
Resumiendo:
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'
No apto para cardíacos... y tampoco recomendable.
Pero bueno, esopoder¡listo! ;-)