Request: Add XDG Base Directory paths as fallback locations

hi at hi at
Fri Feb 2 02:27:26 AEDT 2024

Hello. I'd like to preface this by saying that while this can be considered a feature request, I am more than happy to contribute a patch myself that would deliver this.

I am aware that in the past there has been some hostility towards the suggestion to adhere to the XDG Base Directory Specification for OpenSSH and its various configuration files. For the record, I am not asking for any of the paths to change, nor for the removal of the traditional ~/.ssh directory; I understand that many people still expect this directory to exist for most conventional (typically non-desktop) setups, and it would not be wise to make breaking changes that forego this expectation.

Instead, I ask that the spec be considered in order to provide a set of alternative/fallback paths that OpenSSH may search for in the absence of the typical ~/.ssh directory. As a desktop user still making use of OpenSSH, I greatly prefer being able to adhere to the spec and keep the amount of dotfiles and directories in $HOME minimal. Hence, I would like to at least have the option to move files from the ~/.ssh directory into their respective compliant paths, and have OpenSSH search for those by default, without needing either complex aliases or wrapper scripts with extra usage flags or configuration at the root level. OpenSSH itself would not need to create these directories either, as it may simply prioritise and continue to create the existing ~/.ssh directory.

The approach I'm suggesting is one that plenty of long-standing software has taken up in order to provide the opt-in approach of XDGBDS support. Notably, Git provides such a fallback option in $XDG_CONFIG_HOME/git/config in place of the default ~/.gitconfig, as does GNU Emacs among others. More recently, even Bash has warmed up to the idea despite initially being opposed to the suggestion to change the locations of ~/.bash_profile and ~/.bashrc, as can be seen at

As I said, I am more than happy to provide this myself in a patch or pull request if the developers are okay with the approach as I'm suggesting it. At the end of the day, I don't wish to burden the team itself with something that would be rather low-priority either way.

Kind regards,

More information about the openssh-unix-dev mailing list