SSH using Agent Forwarding with Windows Host OS, Vagrant Ubuntu Guest OS, and Keepass/Keeagent
Solution 1:
Sharing socket file through network file system won't work, as Windows socket and Linux socket are entirely different beasts — Linux inside VM would not know how to use Windows sockets. To make sure VM can utilize authentication agent on host, one needs to enable agent forwarding on both ssh client and server, then ssh
into VM via host (not directly login on VM console).
Assuming:
- SSH server agent forwarding setup is done, according to original post (I haven't used Vagrant so can't tell);
- Keeagent setup is done and running (I have tried client mode but there are some problems dealing with non-RSA/DSA keys so agent mode is safer);
Under putty
profile setup, tick option "Allow agent forwarding" under Connection → SSH → Auth in order to turn on agent forwarding for client. Alternatively, if Cygwin ssh is used on host, then there are 2 choices:
- Install ssh-pageant and make it start automatically with cygwin (in
~/.profile
and the like). - Specify desired Windows socket file location in Keeagent setup and set
$SSH_AUTH_SOCK
variable in cygwin to corresponding location.
To check if agent forwarding is working or not, ssh into VM and check the variable $SSH_AUTH_SOCK
. If it's non-empty and pointing to a Linux socket file that exists, then everything is supposed to be fine. If the variable is empty then something is missing.