GIT和SSH,使用哪个密钥?

时间:2012-06-19 01:46:46

标签: git ssh

假设您的.ssh目录包含30个密钥(15个私有密钥和15个公共密钥)

GIT中,可以检查哪一个用于连接到给定的远程仓库吗?

7 个答案:

答案 0 :(得分:54)

在详细模式下执行ssh,又称ssh -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 help page中的第4步结合起来,ssh -vT git@github.com可以给你答案。

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

答案 1 :(得分:50)

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

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

~/.ssh/whatever是私钥的路径

此外,可以从

中选择用户和主持人
git push git@git.assembla.com:repo_name.git
         ^__ ^_______________
         user host

答案 2 :(得分:7)

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

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

答案 3 :(得分:5)

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

答案 4 :(得分:3)

这可能是超级优势,但是运行ssh -vT git@github.com后,它表明我正在检查/root/.ssh的密钥,我期望它检查我的主目录,然后我意识到我以根!

答案 5 :(得分:1)

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

现在,您的日志文件将保存用于对每个用户进行身份验证的密钥的指纹。

在Ubuntu上,这些文件是:

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

但是另一个发行版可能会有所不同。只需谷歌搜索他们的位置(例如,有些人使用/ var / log / secure)。

答案 6 :(得分:1)

我想我觉得最实用的是:

GIT_SSH_COMMAND='ssh -v' git …

当然,根据情况的不同,仅将其导出到当前SHELL的环境中可能会有所帮助,这样您就不必每次都手动为其添加前缀。然后就是这样:

export GIT_SSH_COMMAND='ssh -v'
git …

—正如man git所暗示的那样,有一些环境变量会影响使用SSH的Git的操作。根据{{​​1}}的介绍,在部署man ssh选项时,您可以获得一些调试信息(不仅如此,如果您想了解更多信息,请查阅手册)。

  

使用哪个键?

在输出中,您会看到类似……的东西

-v

...这是您的问题的答案。