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)