【问题标题】:Adding a GitHub repository in Xcode 7 using SSH authentication gives an authentication error使用 SSH 身份验证在 Xcode 7 中添加 GitHub 存储库会出现身份验证错误
【发布时间】:2015-12-26 07:00:18
【问题描述】:

我正在尝试在 Xcode 7 中设置一个机器人来进行集成测试。作为设置的一部分,我正在使用 Xcode > Preferences > Accounts > Add Repository... 将远程存储库添加到项目中,但它失败并显示消息 Authentication failed

GitHub 正在使用这个 SSH 密钥在命令行工作,为什么 Xcode 7 不能工作?

【问题讨论】:

    标签: github ssh repository xcode7 bots


    【解决方案1】:

    我在让 XCode 进行身份验证时遇到了类似的问题,但我的 synology NAS 上托管了一个存储库,运行 DSM 5.2,它运行了 git-server。

    在 OSX 10.11 上使用 XCode 7.1.1 并尝试使用 ssh://myUser@192.168.1.220:/volume1/git/myrepository.git 连接到 git 会导致对话框“无法启动 SSH 会话:无法交换加密密钥(-1)”。

    如果您在 nas /etc/ssh/sshd_config 上启用日志记录

    SyslogFacility USER 
    LogLevel DEBUG
    

    然后重新启动 SSH 服务(在 synology webfrontend 中),然后您可以检查 /var/log/messages 中发生的情况(例如,使用 nano /var/log/messages 然后按 ctrl+w、ctrl+v跳转到文件的末尾,它很长)。它会报告如下内容:

    mynas sshd[24182]: fatal: no matching mac found: client hmac-sha1,hmac-sha1-96,hmac-md5,hmac-md5-96,hmac-ripemd160,hmac-ripemd160@openssh.co$
    

    所以基本上客户端和 NAS 不能就使用什么“HMAC”算法达成一致。所以让我们在 NAS 中添加一个(可能会降低安全性,但我们无法在 xcode 端更改它,afaik):

    以 root 身份登录 NAS 并编辑 /etc/sshd/sshd_config 并将“hmac-sha1”添加到 MACs: xxx 的最后(警告:我强烈建议先创建一个备份,如果你让一个错字,您可能会失去对盒子的 SSH 访问权限!但您仍然可以使用“Telnet”(在 NAS 的 Web 前端启用它)并使用备份。该行将如下所示:

    MACs hmac-sha2-256,hmac-sha2-256-etm@openssh.com,hmac-sha2-512,hmac-sha2-512-etm@openssh.com,umac-128-etm@openssh.com,umac-128@openssh.com,hmac-sha1
    

    重启SSH服务,重新尝试用XCode访问git,再次查看日志。

    Nov 29 17:30:59 mynas sshd[31077]: fatal: Unable to negotiate a key exchange method [preauth]
    

    所以登录到您的 NAS,再次编辑 sshd_config,让我们在 Kexalgorithms 行的末尾添加“diffie-hellman-group1-sha1”(一个不错的猜测:p):

    KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256,diffie-hellman-group1-sha1
    

    好的,重新启动 SSH 服务,然后再次尝试使用 XCode 登录。 现在它起作用了。

    免责声明:我不是 Linux 专家,因此可能有更好的方法来做到这一点。此外,这会降低 NAS 的安全性,因为您接受的算法安全性较低……但至少它可以工作,如果有人有更好的想法,我很想听听。

    【讨论】:

      【解决方案2】:

      以为这是Xcode 7的bug,因为posts like this one终于发现问题其实是GitHub引起的。

      GitHub 为组织和团队实施了third party access restrictions,这意味着 2014 年 2 月之前生成的任何 SSH 密钥将不再适用于新应用。在您组织的设置页面中查找该部分:

      我生成了新的 SSH 密钥并上传了它们,我的 Xcode 7 机器人可以正常使用 SSH。

      【讨论】:

        猜你喜欢
        • 2016-09-05
        • 1970-01-01
        • 2014-11-13
        • 2014-12-22
        • 1970-01-01
        • 1970-01-01
        • 2014-09-09
        • 2021-12-30
        • 1970-01-01
        相关资源
        最近更新 更多