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 /日志/安全例如)。