我将soureTree用于克隆ssh项目。
当我打印ssh -T时,我可以在命令行中使其成功。 当我git clone时,以ssh方式pull,push ...仍然在命令行中起作用。(终端)
但是在sourcetree中仍然会出现错误:
Permission denied (publickey)
我该如何解决?
答案 0 :(得分:1)
您收到此消息是因为它无法使用SSH代理提供的任何密钥对您进行身份验证。要验证这种情况,请执行以下操作:
php bin/console doctrine:migrations:migrate
这将尝试为其建立与Mercurial的连接。如果密钥正确装入,您应该收到与以下类似的响应。
如果看不到消息,可能是由多种因素引起的,但这是最常见的:
要检查是否已加载公钥,请执行以下操作:
打开浏览器并登录到原点。
显示``SSH密钥''页面。它显示所有现有键的列表。
如果没有列出任何键,请设置一个。
如果您的SSH代理不知道提供密钥,则连接将失败。要找出您的SSH代理当前提供的密钥并添加它们,请执行以下操作:
ssh -T
然后,如果您没有看到列出的密钥,请通过
添加$ ssh-add -l
有关更多信息,请查看我们的《 SSH问题排查》完整指南。
如果收到错误“权限被拒绝”,则git或mercurial也可能无权在本地创建项目文件夹。检查您尝试检出项目的目录的权限,并确保您具有写权限。
ssh-add ~/.ssh/identity
发现/ var / log / gitlab / sshd / current内部存在多次消息: 身份验证被拒绝:所有权错误或文件/var/opt/gitlab/.ssh/authorized_keys的模式 之后,我使用以下命令将该文件的所有权从99:users更改为git:users: chown git:用户的authorized_keys
答案 1 :(得分:1)
我下载了SourceTree 2.7.6,并遇到了相同的问题。 我认为@ Frankie_0927是正确的,私钥必须命名为id_rsa,并且必须在ssh代理中注册。
对于其他人,遇到此问题: 请尝试按照以下链接中的说明生成一对密钥: https://help.github.com/articles/connecting-to-github-with-ssh/ 将私钥id_rsa存储在〜/ user / YOURUSERNAME / .ssh(mac的路径)中,并将公钥发布到github帐户中。 然后运行
ssh-add -l
您将看到
The agent has no identities.
所以您运行
ssh-add -K ~/.ssh/id_rsa
将该密钥添加到ssh代理中。 之后,运行
ssh-add -l
再次,您将看到已添加密钥,并且应该解决了问题。