GIT and SSH, which key is used?
.ssh directory contains 30 keys (15 private and 15 public)
GIT, can one check which one is used to connect to a given remote repo?
- Installing git repository on Oracle Enterprise Linux 5 — SSH problems
- Set up Gitosis, but can't clone
- Working on two different Git Organization repos using two different credentials in proxy mode
- Github - Why would HTTPS stop working while SSH works fine
- SourceTree ssh-agent failing after update
- Problems cloning a git repository (Newbie problems)
5 Solutions collect form web for “GIT and SSH, which key is used?”
The following entry in
.ssh/config file solves the problem
host git.assembla.com user git identityfile ~/.ssh/whatever
~/.ssh/whatever is a path to your private key
Additionally, user and host can be picked up from
git push firstname.lastname@example.org:repo_name.git ^__ ^_______________ user host
Executing ssh in verbose mode, aka
ssh -v user@host, will print a huge load of debugging info, which also contains details on which keyfiles it is trying for login.
debug1: Authentications that can continue: publickey debug1: Next authentication method: publickey debug1: Offering RSA public key: /home/user/.ssh/id_rsa debug1: Server accepts key: pkalg ssh-rsa blen 332 debug1: read PEM private key done: type RSA debug1: Authentication succeeded (publickey).
Now if you combine this, with the Step 4 in Git’s own SSH help page,
ssh -vT email@example.com can give you the answer.
Note: You can also use the
-i switch to tell ssh during command execution, which keyfile to use.
git just uses
ssh to connect, it will use whichever key
ssh would use to connect to the remote host. See the
~/.ssh/config file for details; the
host block uses the
IdentityFile directive to specify the private key to use. The
ssh_config(5) manpage contains full details.
Unless it is specified on the
.ssh/config it will use the default private key file.
The default file is
~/.ssh/identity depending on the protocol version.
On the remote server, edit the sshd_config file and change LogLevel from INFO to VERBOSE and restart ssh.
Now your log file will hold the fingerprint of the key that was used to authenticate each user.
On Ubuntu, these files are:
but they may be different on another distro. Just google for their location (some use /var/log/secure for example).