OpenSSH modifica la ubicación de los archivos específicos del usuario para cumplir con la especificación XDG

OpenSSH modifica la ubicación de los archivos específicos del usuario para cumplir con la especificación XDG

¿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:

  • Asumiendoexport 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 comando ssh -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 de sshd(el servidor), coloque un xxx.conf archivo que /etc/ssh/sshd_config.d/xxx.conflo contenga AuthorizedKeysFile ~/.config/ssh/authorized_keys, ya sea como una declaración global o en un bloque por usuario Match user xxx. En cualquier caso, tendría que codificar ~/.config/sshya que no se puede expandir XDG_CONFIG_HOME.

Para UserKnownHostsFiley 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.confcontenga 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! ;-)

información relacionada