git-bashprivate-keyopensshplinkpageant

Pageant does not load SSH-2 key generated with GitBash


The implementation of key handling with (Tortoise)Git for Windows confuses me. As far as I understood, you can implement with either ssh.exe (gits own ssh program), where you can then choose an ssh key per host in your ssh_config in the 'faked' home dir. For me, that is not really applicable, because I have multiple Bitbucket accounts using different keys but all the same host.

Then there is a way to use TortoiseGitPlink. You basically set up pageant with a putty generated key and let TortoiseGit use that one - with the environment variable SSH_GIT set to your TortoiseGitPlink.exe).

Now my question is the following: I just created an ssh2 rsa key with default options using ssh-keygen -t rsa -f ~/.ssh/rsa_key command in GitBash. I tried loading this file into pageant.exe by using its GUI. I got the error: Couldn't load this key (OpenSSH-SSH-2 private key).

What is the problem with this key? Made in GitBash it should adhere all standard openSSH guidelines. Is it correct that there are differences in puTTY keys and openSSH keys?


Solution

  • The Pageant can load keys in the PuTTY format (.ppk) only.

    If you attempt to load a key in a different format, still recognized by PuTTY tools, you get the mentioned error message:

    Couldn't load this key (OpenSSH-SSH-2 private key)

    You need to use the PuTTYgen to convert the key from the OpenSSH format to the PuTTY format. If the Pageant recognized the file format, the PuTTYgen can convert it.


    Or even easier, use the PuTTYgen to create the a key directly in the PuTTY format, instead of using the ssh-keygen.


    See the PuTTY wishlist for reasons it has its own key format:
    https://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/key-formats.html

    Note that I believe there's no standard for SSH-2 private key file format.