说你的 .ssh
目录包含30个密钥(15个私有密钥和15个公开密钥)。
在Git中哪里可以检查哪个用于连接到给定的远程存储库?
说你的 .ssh
目录包含30个密钥(15个私有密钥和15个公开密钥)。
在Git中哪里可以检查哪个用于连接到给定的远程存储库?
Answers:
在aka模式下执行sshssh -v user@host
将会打印大量调试信息,其中还包含有关它尝试登录的密钥文件的详细信息。
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使用哪个密钥文件。
ssh -vv user@host 2> >(grep Offering)
-这样会使事情变得更容易。最后一个文件应该是公钥。例如:debug1: Offering RSA public key: /Users/macbookpro/.ssh/id_rsa
github
与...不同git
。
.ssh/config
文件中的以下条目解决了该问题
host git.assembla.com
user git
identityfile ~/.ssh/whatever
~/.ssh/whatever
私钥的路径在哪里
此外,用户和主机可以从
git push git@git.assembla.com:repo_name.git
^__ ^_______________
user host
除非在上指定,.ssh/config
否则它将使用默认的私钥文件。
默认文件是~/.ssh/id_rsa
或~/.ssh/id_dsa
或,~/.ssh/identity
取决于协议版本。
我说最实际的是:
GIT_SSH_COMMAND='ssh -v' git …
当然,根据情况的不同,将其导出到当前SHELL的环境中可能会有所帮助,这样您就不必每次都手动为其添加前缀。然后就是这样:
export GIT_SSH_COMMAND='ssh -v'
git …
—正如所man git
建议的,有一些环境变量会影响使用SSH的Git的操作。据man ssh
您介绍,在部署-v
选件时可以获得一些调试信息(不仅如此,如果您想了解更多信息,请查阅手册)。
使用哪个密钥?
在输出中,您将看到……
debug1: Offering public key: …
…这就是您的qn的答案。
set GIT_SSH_COMMAND=ssh -v
。这帮助我弄清楚了ssh-config Inlcude-Path在Windows上应该是这样的:Include /C/Users/YourUserName.ssh/config
为了使ssh并因此使git使用一个配置文件,该文件然后使用例如HOST *
条目来指定git / ssh使用的身份文件。
由于git
仅用于ssh
连接,它将使用ssh
将用于连接到远程主机的任何密钥。有关~/.ssh/config
详细信息,请参见文件。该host
块使用IdentityFile
指令指定要使用的私钥。该手册ssh_config(5)
页包含完整的详细信息。
/etc/ssh_config
似乎充满评论条目的文件
~/.ssh/config
自己。
这可能是超级优势,但是在运行ssh -vT git@github.com
它后/root/.ssh
,我看到它正在检查密钥,我期望它可以检查我的主目录,然后我意识到我以root用户身份登录!
ssh
的询问方式外,此技术是正确的解决方案。谢谢。