【问题标题】:Could not create directory /var/teamsserver无法创建目录 /var/teamsserver
【发布时间】:2013-11-06 16:16:51
【问题描述】:

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

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 line 20:

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

debug1:连接已建立。

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

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

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

debug1:身份文件 /var/teamsserver/.ssh/id_dsa type -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 pat OpenSSH*

debug1: SSH2_MSG_KEXINIT 发送

debug1:收到 SSH2_MSG_KEXINIT

debug1:kex: server->client aes128-ctr hmac-md5 none

debug1:kex:client->server aes128-ctr hmac-md5 none

debug1:SSH2_MSG_KEX_DH_GEX_REQUEST(1024

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 Known Hosts 文件路径位于 /Library/Server/Xcode/Config/ssh_known_hosts

SSH 严格的主机检查 已启用(您可以通过编辑禁用此功能

SSHStrictHostKeyChecking key in /Library/Server/Xcode/Config/xcsbuildd.plist

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

TrustSelfSignedSSLCertificates 键入 /Library/Server/Xcode/Config/xcsbuildd.plist

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

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

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

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

有什么想法吗?

谢谢

【问题讨论】:

    标签: macos continuous-integration xcode5 bots osx-server


    【解决方案1】:

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

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

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

    HTH

    【讨论】:

    • 感谢您的建议,但正如我所写的那样,它没有帮助:/。这些行仍然存在问题: debug1:身份文件/var/teamsserver/.ssh/id_rsa type -1 debug1:身份文件/var/teamsserver/.ssh/id_rsa-cert type -1 debug1:身份文件/var/teamsserver /.ssh/id_dsa type -1 debug1: 身份文件 /var/teamsserver/.ssh/id_dsa-cert type -1 此外,我已将 id_rsa 添加到 /var/teamsserver/.ssh 但它仅在以下方面有所帮助: debug1: identity文件 /var/teamsserver/.ssh/id_rsa 类型 1(不是以前的 -1)...仍在寻找解决方案...
    • 谢谢@user1132570。上面的脚本确实解决了目录问题。
    【解决方案2】:

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

    第一个答案:

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

    SSH Known Hosts 文件路径位于 /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。

    又完成了。

    【讨论】:

    • 这个答案和上面 user1132570 的答案都为我解决了这个问题。因此,如果此答案不能为您解决问题,请务必检查 /var/teamsserver 是否存在。
    • 这对我不起作用。两者都做了,仍然抱怨无法从 /var/teamsserver 创建目录。
    • 您是否尝试过手动处理它? user1132570 建议的方式足以以适当的权限创建它。
    • 我已经尝试了所有 3 个答案,但仍然没有运气。 debug1:提供 RSA 公钥:/Library/Server/Xcode/Data/BotRuns/BotRun-a28db5fc-1932-47a0-a528-f52c75e421e2.bundle/credentials/65885363-194e-454b-a3ce-56dcaaf5d3c9/id_rsa debug1:可以验证继续:publickey debug1:没有更多的身份验证方法可以尝试。权限被拒绝(公钥)。致命:无法从远程存储库中读取。
    • 您能否使用您的密钥通过 ssh 访问服务器(这样您就无需输入密码)?也许您没有在已知密钥列表中添加密钥?
    【解决方案3】:

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

    • 你以谁的身份运行? $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})

    【讨论】:

      【解决方案4】:

      我做了 3 件事来解决这个问题,尽管我不确定其中哪一个解决了问题:

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

      如果这对您来说是个问题,请查看https://discussions.apple.com/thread/5586872

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-03-09
        • 1970-01-01
        • 1970-01-01
        • 2013-12-06
        • 2017-08-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多