SourceTree 总是权限被拒绝(公钥)

Posted

技术标签:

【中文标题】SourceTree 总是权限被拒绝(公钥)【英文标题】:SourceTree always Permission denied (publickey) 【发布时间】:2019-01-10 00:21:13 【问题描述】:

我使用 soureTree 来克隆 ssh 项目。

    我已经创建了 ssh 密钥 我已经设置好了 gitlab ssh 密钥设置 我已经 ssh-add "mysshkey" 我已经 ssh-add -K 'mysshkey'

当我打印 ssh -T 时,我可以在命令行中使其成功。 当我 git clone、pull、push 以 ssh 方式...它仍然在命令行中工作。(终端)

但在 sourcetree 中现在仍然出现错误:

Permission denied (publickey)

我该如何解决?

【问题讨论】:

【参考方案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

再次,您将看到密钥已添加,问题应该得到解决。

【讨论】:

非常直接且很棒的答案。谢谢【参考方案2】:

您收到此消息是因为它无法使用您的 SSH 代理提供给它的任何密钥对您进行身份验证。要验证是否是这种情况,请执行以下操作:

ssh -T 

这将尝试为 Mercurial 创建与它的连接。如果您的密钥已正确加载,您应该会收到类似于以下内容的响应。

如果您没有看到消息,这可能是由多种因素造成的,但这些是最常见的:

- 您的公钥未加载

要检查您的公钥是否已加载,请执行以下操作:

    打开浏览器并登录 origin。

    显示 SSH 密钥页面。它显示所有现有键的列表。

    如果您没有列出任何键,请设置一个。

- 您的身份未加载到您的 SSH 代理中

如果您的 SSH 代理不知道提供密钥,则连接将失败。要找出您的 SSH 代理当前提供的密钥并添加它们,请执行以下操作:

$ ssh-add -l

然后,如果您没有看到列出的密钥,请添加它

ssh-add ~/.ssh/identity

有关更多信息,请查看我们完整的 SSH 问题疑难解答指南。

- 您无权在本地文件系统上创建存储库

如果您收到错误“Permission denied”,也可能是 git 或 mercurial 没有权限在本地创建项目文件夹。检查您尝试签出项目的目录的权限,并确保您具有写入权限。

1   Right click and "Run as Administrator".
2   Type ssh-keygen
3   Press enter.
4   It will ask you to save the key to the specific directory.
5   Press enter. It will prompt you to type password or enter without password.
6   The public key will be created to the specific directory.
7   Now go to the directory and open .ssh folder.
8   You'll see a file id_rsa.pub. Open it on notepad. Copy all text from it.
9   Go to https://gitlab.com/profile/keys .
10  Paste here in the "key" textfield.
11  Now click on the "Title" below. It will automatically get filled.
12  Then click "Add key".

发现在/var/log/gitlab/sshd/current里面出现了多次消息: 身份验证被拒绝:文件/var/opt/gitlab/.ssh/authorized_keys 的所有权或模式错误 之后,我将该文件的所有权从 99:users 更改为 git:users: chown git:users authorized_keys

【讨论】:

谢谢你,但是,我认为你的建议对我不起作用,我尝试了所有步骤,但仍然不起作用 谢谢,我重写了我的 id_rsa 的 ssh 密钥,它可以工作,我认为,sourceTree 默认读取此密钥名称,但我不知道如何更改当前默认的密钥名称 谢谢。我有多个 ssh 身份,而合适的身份没有加载 ssh-add。运行 add 命令,然后 Sourcetree 再次推送(即使 sourcetree 总是“加载”私钥)。【参考方案3】:

我可以通过将我的 github 密钥添加到 Apple 钥匙串来修复它:

ssh-add --apple-use-keychain ~/.ssh/id_ed25519

【讨论】:

以上是关于SourceTree 总是权限被拒绝(公钥)的主要内容,如果未能解决你的问题,请参考以下文章

使用 scp 将文件传输到 amazon ec2 实例总是给我拒绝权限(公钥,gssapi-with-mic)

git push:权限被拒绝(公钥)

Gitlab,权限被拒绝(公钥),版本 6-4 稳定

GPDB:SSH 权限被拒绝(公钥)

权限被拒绝(公钥)。 GitLab 突然出现错误。我正确配置了私钥和公钥

通过公钥进行 ssh 访问失败“权限被拒绝(公钥)”