在Xcode 7中使用SSH身份验证添加GitHub存储库会导致身份验证错误

我正在尝试在Xcode 7中设置一个用于集成测试的Bot。 作为设置的一部分,我使用Xcode> Preferences> Accounts> Add Repository ...为项目添加了一个远程存储库,但是失败并显示消息Authentication failed:

在这里输入图像描述

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


在认为这是一个Xcode 7错误之后,由于像这样的帖子,我终于发现问题实际上是由GitHub引起的。

GitHub为组织和团队实施了第三方访问限制,这意味着2014年2月之前生成的所有SSH密钥将不再适用于新应用。 在组织设置页面中查找该部分:

GitHub组织第三方访问设置

我生成了新的SSH密钥并上传了它们,我的Xcode 7机器人在SSH上正常工作。


我得到了一个类似的问题,就是让XCode进行身份验证,但是在Synology NAS上托管的存储库上运行的DSM 5.2运行着git-server。

在OSX 10.11上使用XCode 7.1.1并尝试使用ssh://myUser@192.168.1.220连接到git:/volume1/git/myrepository.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跳转到该文件的结尾,它是loooong)。 它会报告这样的事情:

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,并在最后一行添加MAC地址为xxx的行中添加“hmac-sha1”(警告:我强烈建议先创建一个备份,如果您输入错误可能会丢失对该设备的SSH访问权限!但是您仍然可以使用“Telnet”(在您的NAS'webfrontend中启用它)并使用您的备份。行将如下所示:

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上的安全性,因为您接受的安全算法不够安全......但至少它可以工作,如果有人有更好的想法,我很乐意听到它。

链接地址: http://www.djcxy.com/p/2689.html

上一篇: Adding a GitHub repository in Xcode 7 using SSH authentication gives an authentication error

下一篇: Difference between HashMap, LinkedHashMap and TreeMap