在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密钥将不再适用于新应用。 在组织设置页面中查找该部分:
我生成了新的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