10

我已经在我的 mac 上安装了 os x server (Mavericks) 并且想添加 bot. 由于某些原因,我的远程仓库位于其他外部服务器上,我可以通过指定端口上的用户名和密码访问它。我已经将远程仓库添加到 os x 服务器,如下所示:

ssh://1.2.3.4:PORT/path/to/repo.git

...填写用户名和密码。

然后我在 Xcode 中添加了 bot,但是当我点击集成时它失败并显示日志:

克隆到 'ssh_myusername_1_2_3_4_PORT_path_to_repo_git'...

OpenSSH_6.2p2,OSSLShim 0.9.8r 2011 年 12 月 8 日调试 1:阅读

配置数据 /etc/ssh_config debug1: /etc/ssh_config 第 20 行:

为 * debug1 应用选项:连接到 1.2.3.4 [1.2.3.4] 端口 PORT。

debug1:建立连接。

无法创建目录“/var/teamsserver/.ssh”。

debug1:身份文件 /var/teamsserver/.ssh/id_rsa 类型 -1

debug1:身份文件 /var/teamsserver/.ssh/id_rsa-cert type -1

debug1:身份文件 /var/teamsserver/.ssh/id_dsa 类型 -1

debug1:身份文件 /var/teamsserver/.ssh/id_dsa-cert type -1

debug1:为协议 2.0 启用兼容模式

debug1:本地版本字符串 SSH-2.0-OpenSSH_6.2

debug1:远程协议版本2.0,远程软件版本OpenSSH_6.0p1 Debian-3ubuntu1

debug1:匹配:OpenSSH_6.0p1 Debian-3ubuntu1 拍 OpenSSH*

debug1: SSH2_MSG_KEXINIT 已发送

debug1:收到 SSH2_MSG_KEXINIT

调试1:kex:服务器->客户端aes128-ctr hmac-md5无

调试1:kex:客户端->服务器aes128-ctr hmac-md5无

debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) 已发送

debug1:期待 SSH2_MSG_KEX_DH_GEX_GROUP

debug1: SSH2_MSG_KEX_DH_GEX_INIT 发送

debug1:期待 SSH2_MSG_KEX_DH_GEX_REPLY

debug1:服务器主机密钥:RSA b6:b8:0e:e4:25:63:6d:64:a3:d6:6d:7f:46:85:72:0d

debug1: 在没有端口标识符的情况下进行检查 [1.2.3.4]:PORT 没有已知的 RSA 主机密钥,并且您已请求严格检查。主机密钥验证失败。

致命:无法从远程存储库中读取。

请确保您具有正确的访问权限并且存储库存在。

SSH 已知主机文件路径位于 /Library/Server/Xcode/Config/ssh_known_hosts

SSH 严格主机检查已启用(您可以通过编辑

/Library/Server/Xcode/Config/xcsbuildd.plist 中的 SSHStrictHostKeyChecking 密钥

不受信任的 HTTPS 证书被禁用(您可以通过编辑

/Library/Server/Xcode/Config/xcsbuildd.plist 中的 TrustSelfSignedSSLCertificates 密钥

我认为权限存在问题,但在我的 /var 中有一些具有不同权限的目录,当然没有团队服务器文件夹......

所以我不知道如何设置适当的权限(不改变 /var... 的其他子目录的权限)。我可以尝试手动制作目录“团队服务器”,但不知道有什么权限......?你有什么想法?

编辑:出于测试目的,我使用 777 创建了 teamsserver 目录,但这并不能解决我的问题。日志看起来与之前的相同,但只是没有行:

无法创建目录“/var/teamsserver/.ssh”。

有任何想法吗?

谢谢

4

4 回答 4

8

在尝试针对受 ssh 密钥对保护的 github 存储库运行 git 命令时,我遇到了与方案操作构建脚本类似的问题。

机器人使用 _teamsserver 系统帐户运行构建。正如您所发现的,这些帐户默认情况下没有主目录。要设置构建以访问和修改其主目录,我在以下方面取得了成功(您的里程可能会有所不同):

sudo mkdir /var/teamsserver
sudo chown -R _teamsserver:_teamsserver /var/teamsserver/
sudo chmod -R 770 /var/teamsserver/

高温高压

于 2013-10-29T00:46:48.063 回答
7

好的,我花了一些时间,但我有一个解决方案......实际上有两个解决方案。羞于承认但阅读和理解日志足以解决问题(再次:P)。

第一个答案:

在安装 os x 服务器之前,我的服务器主机密钥已添加到 .ssh/known_hosts 中。服务器不使用已知主机的路径。正如日志所说,服务器使用:

SSH 已知主机文件路径位于 /Library/Server/Xcode/Config/ssh_known_hosts

就我而言,该文件是空的。所以要解决这个问题,将 known_hosts 复制到 ssh_known_hosts 就足够了:

sudo cp ~/.ssh/known_hosts /Library/Server/Xcode/Config/ssh_known_hosts

就是这么简单。

第二个答案:

根据再次登录

SSH 严格主机检查已启用(您可以通过编辑 /Library/Server/Xcode/Config/xcsbuildd.plist 中的 SSHStrictHostKeyChecking 键来禁用此功能

将 SSHStrictHostKeyChecking 更改为 false。

它又完成了。

于 2013-10-31T14:46:48.513 回答
0

如果您已尝试上述方法并且仍然收到权限被拒绝错误,则您可能没有对该文件/目录的正确权限。

  • 你以谁的身份跑步?$id
  • $ls -al服务器尝试从中读取 id_rsa 的目录(可能类似于此路径Library/Server/Xcode/Data/BotRuns/BotRun-a28db5fc-1932-47a0-a528-f52c75e421e2.b‌​undle/credentials/65885363-194e-454b-a3ce-56dcaaf5d3c9/id_rsa:)
  • 更改该文件的所有权 ^^ ( $sudo chown {#id} {#path})
于 2014-01-09T20:49:39.337 回答
0

我做了 3 件事来让我克服这个问题,尽管我不确定它们中的哪一个解决了这个问题:

  1. 将我项目中的所有 git 存储库更改为使用 HTTPS 而不是 SSH (git) 版本的 url
  2. 根据机器人源代码控制日志中的说明禁用 SSHStrictHostKeyChecking。
  3. 根据日志中的相同说明启用 TrustSelfSignedSSLCertificates。

另请查看https://discussions.apple.com/thread/5586872,以防这对您来说是个问题。

当我有更多时间时,我会支持其中一些项目并进行测试。

于 2014-01-21T12:09:47.597 回答