Reputation: 1484
First of all, I am aware that this question has been posted several times in stack overflow here, here, here, as well as in some other places.
However, I decided to open a new thread (and taking the risk of being downvoted) because I don't think there is an actual issue with my machine, but with PUTTY.
Environment description
In a nutshell, I have a windows machine running a virtual machine (VMWare).
Case scenario #1 (it works)
This case scenario describes the behaviour I expect to achieve. Basically, this procedure is being done within the VM itself. That means, by operating the machine through the VM Player.
service sshd status
yields openssh-daemon (pid 1557) is running...
ssh-add -l
yields 2048 1b:31 [...] b8:de Git Admin (RSA)
, 2048 d2:58 [...] f6:2b pando (RSA)
and (2048) be:9b [...] dc:e9 web (RSA)
. These are the three users I have configured in my virtual machine. The SSH keys have been automatically loaded and added to the list of identities of the SSH service. pando
user).git commit -a -m "My message"
is successful because the Git Admin
key is in the identity list of the SSH agentgit push origin master
is also successful, for the same reasonsCase scenario #2 (it does not work)
This case scenario describes the same procedure, but from the Putty terminal. I added to the Pageant the same SSH keys as described in Case Scenario #1, point 3. It looks like everything is Ok with Putty, because I can successfully SSH my virtual machine
pando
(which is one of the identities mentioned in Case Scenario 1).su
service sshd status
yields openssh-daemon (pid 1557) is running...
(notice that it is the same result as we got in point #2 of the first case scenario)ssh-add -l
yields Could not open a connection to your authentication agent
Now, I am familiar with that procedure of eval $(ssh-agent)
and then to manually add the SSH keys on my SSH folder. In fact, I do that every time I SSH the virtual machine. But I actually prefer not to do it.
I am also familiar with adding some script to the .bashsrc
file, but the last time I did it, I got a colateral effect with Puppet.
So the basic question is: What's the difference betwen both case scenarios, even though I am using the same SSH keys? Is it that Pageant is not forwarding the keys? If so, why am I able to SSH my machine? Why should I change the .bashrc
file of my pando
user in the second case scenario, when I can achieve exactly the same thing without it in the first case scenario? I guess I am missing a fundamental piece of information here
Hope that makes sense.
Regards.
Upvotes: 0
Views: 1969
Reputation: 25986
openssh-daemon and authentication-daemon are not the same thing. You are interested in the authentication one aka ssh-agent
, which is your personal key-store. The openssh-deamon aka sshd
is server that is running system-wide and which is accepting connections to your computer.
Desktop environments usually start authentication agents (ssh-agent
, seahorse
, gnome-keyring
) by default so the ssh-add
works for you. But the connection is stored in environment variables, which are dropped in transition from your user to superuser (su
).
You can allow connection persistence using -m
switch to su
. This will preserve environment variables and so your connection to authentication agent.
What's the difference between both case scenarios, even though I am using the same SSH keys?
There should be no difference, except the su
part dropping environment variables and not executing .bashrc
and similar scripts when changing user (you can force su
to behave the same way as a login shell using su -l
, but it is not the problem). The problem is that the connection to authentication agent is preserved as environment variable and UNIX domain socket, which gets lost during su
. You can use su -m
it should work for you.
Is it that Pageant is not forwarding the keys?
Forwarding needs to be allowed in PuTTY:
Upvotes: 1