【问题标题】:SourceTree always Permission denied (publickey)SourceTree 总是权限被拒绝(公钥)
【发布时间】:2023-03-16 09:11:01
【问题描述】:

我使用 soureTree 来克隆 ssh 项目。

  1. 我已经创建了 ssh 密钥
  2. 我已经设置好了 gitlab ssh 密钥设置
  3. 我已经 ssh-add "mysshkey"
  4. 我已经 ssh-add -K 'mysshkey'

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

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

Permission denied (publickey)

我该如何解决?

【问题讨论】:

    标签: git macos gitlab atlassian-sourcetree


    【解决方案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 创建与它的连接。如果您的密钥已正确加载,您应该会收到类似于以下内容的响应。

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

    - 您的公钥未加载

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

    1. 打开浏览器并登录 origin。

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

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

    - 您的身份未加载到您的 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-11
      • 2019-11-24
      • 2014-11-08
      • 2012-01-18
      • 2012-04-25
      • 2014-03-18
      • 2023-03-22
      相关资源
      最近更新 更多