GIT和SSH,使用哪个密钥?

说您的.ssh目录包含30个密钥(15个私人和15个公共)

GIT哪个地方,可以检查哪一个用于连接到给定的远程回购?

.ssh/config文件中的以下条目解决了该问题

  host git.assembla.com user git identityfile ~/.ssh/whatever 

哪里~/.ssh/whatever是你的私钥的path

另外,用户和主机可以从中提取

 git push git@git.assembla.com:repo_name.git ^__ ^_______________ user host 

在详细模式下执行ssh(又名ssh -v user@host ,将会打印大量的debugging信息,其中还包含有关正在尝试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). 

现在,如果你把这个与Git自己的SSH帮助页面中的第4步结合起来, ssh -vT git@github.com可以给你答案。

注意:您也可以使用-i开关在命令执行期间告诉ssh使用哪个密钥文件。

由于git只是使用ssh来连接,它将使用ssh将用来连接到远程主机的任何密钥。 有关详细信息,请参阅~/.ssh/config文件; host块使用IdentityFile指令来指定要使用的私钥。 ssh_config(5)页包含完整的详细信息。

除非在.ssh/config指定,否则将使用默认的私钥文件。

默认文件是~/.ssh/id_rsa~/.ssh/id_dsa~/.ssh/identity具体取决于协议版本。

在远程服务器上,编辑sshd_config文件并将LogLevel从INFO更改为VERBOSE,然后重新启动ssh。

现在您的日志文件将保存用于validation每个用户的密钥的指纹。

在Ubuntu上,这些文件是:

 /etc/ssh/sshd_config /var/log/auth.log 

但是在另一个发行版中可能会有所不同。 只是谷歌的位置(一些使用/ var /日志/安全例如)。