For a long time I've wondered why when I use ssh on MacOS I need to use ssh-add to add keys to the ssh agent, whereas when I use ssh on Fedora I don't. The agent seems to automatically load keys in my ~/.ssh/ directory. The question pops up from time to time, and I usually research a little until I uncover something new, and satisfy my curiosity.

Some time ago I set up a Fedora server locally, and noticed that there I had to use ssh-add too. At the time I decided to create a config file where I specify the identity file for the only host I connect to, which is github.

Some time later I saw the same behavior on a remote server I set up on rackspace. This server uses fedora as well. However, on that server I need to start the ssh agent, as well as manually add the keys to it every time I want to use ssh to connect to github. For some reason I never set up a config file there, and today I had another one of those moments where I just want to figure everything out.

I think today's been one of the longest research sessions. On my previous research session I learned that Gnome, or more accurately X, starts the ssh agent, and adds keys to it. At that time that was enough to satisfy my curiosity, but today I really wanted to figure out how it does that, and why MacOS does not.

I spent some time reading the Xsession script, and the scripts that it includes as it is executed, and I confirmed what I had read on some sources: X starts the ssh agent and passes the gnome session script to it. So, basically I confirmed what I learned before about X starting the ssh agent. This is the reason I have to manually start the agent in the rackspace server, because that does not run X. I guess the local Fedora server does it's own set up at start time to run the ssh agent, but I haven't looked into that.

However, it wasn't very clear to me how the Fedora ssh agent got a hold of the existing ssh keys, while the MacOS agent does not. I assumed both OSes used the same ssh-agent from OpenSSH, but at this point I'm thinking they do not.

Reading this question Adding SSH keys to ssh-agent on demand I saw that the single answer there mentions that an agent may do something fancy to add keys to the agent beforehand. And it goes on to specifically mention that a desktop environment implementation may have keys in some wallet. This made me think gnome has its own agent implementation.

At this point I want to make a parenthesis to mention that in MacOS I've added a key to my local fedora server to the keychain, and this effectively loads the key in the ssh agent, and unlocks it. I did this some time ago, and it made me think that Fedora was doing something similar, where it had keys in some kind of keychain, and it was loading them that way, so today I started looking into some type of keychain in fedora. I eventually learned about gnome-keyring. Also, the question I linked above mentions gnome-keyring-daemon, and how it launches an ssh-agent

Back to today's research, I started looking into the gnome source. Specifically, the gnome-keyring project. In that project there is an ssh-agent, that seems to have pre-loading functionality for keys (https://gitlab.gnome.org/GNOME/gnome-keyring/-/tree/master/daemon/ssh-agent). This is where my question arises: Does gnome have it's own ssh-agent implementation, and that is what Fedora uses? And if that is the case, what happens to the OpenSSH implementation in Fedora systems?

UPDATE: Yesterday, after posting this question I learned my Fedora system (desktop, not server) is actually using Wayland. I had seen in the about section of the settings that the Windowing system was set to Wayland before, but it wasn't clear to me that this meant X was not being used. This may be obvious to many, but I'm not an expert on any of this. It would also seem that Wayland is not starting the ssh-agent in the same way X does, but rather on demand when it is actually first needed (How do I set a default ssh-agent timeout under Gnome).

It's also been pointed in the comments that my question may be a bit pointless, but I want to get confirmation of my suspicions from someone who actually knows, and understands the inner workings of fedora and ssh-agent precisely because I'm not an expert, and I don't want to just accept my possibly wrong/incomplete findings.

  • 1
    I don't understand the point of the question. You have found the source code of GNOME's implementation of ssh-agent functionality and now you're asking if it has such an implementation? "what happens to the OpenSSH implementation in Fedora systems?" - you're free to use it if you want.
    – muru
    Commented May 25, 2023 at 6:47
  • Thanks. You do have a point, but I want someone who knows this stuff to confirm whether gnome does implement, and use it's own version of ssh-agent.
    – Buzu
    Commented May 25, 2023 at 14:10
  • 1
    Yes, it does. It's quite convenient if you use GNOME Keyring/Seahorse. It also has a GPG agent implementation, IIRC.
    – muru
    Commented May 25, 2023 at 14:35
  • Thanks. I'll continue researching this topic a bit more.
    – Buzu
    Commented May 25, 2023 at 14:54
  • Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer.
    – Community Bot
    Commented May 29, 2023 at 19:14

1 Answer 1


I found the confirmation I was looking for in the Gnome Keyring SSH Agent wiki page. There it specifically states that the ssh-agent included with gnome-keyring automatically loads files in the ~/.ssh directory that have a corresponding .pub file.

A nice resource, if you want to read more about keyring is this ITnext article.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .