无法创建目录 /var/teamsserver
Posted
技术标签:
【中文标题】无法创建目录 /var/teamsserver【英文标题】:Could not create directory /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”。
有什么想法吗?
谢谢
【问题讨论】:
【参考方案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.bundle/credentials/65885363-194e-454b-a3ce-56dcaaf5d3c9/id_rsa
)
更改该文件的所有权 ^^ ($sudo chown #id #path
)
【讨论】:
【参考方案4】:我做了 3 件事来解决这个问题,尽管我不确定其中哪一个解决了问题:
-
将我项目中的所有 git 存储库更改为使用 HTTPS 而不是 SSH (git) 版本的 url
根据机器人源代码控制日志中的说明禁用 SSHStrictHostKeyChecking。
根据日志中的相同说明启用 TrustSelfSignedSSLCertificates。
如果这对您来说是个问题,请查看https://discussions.apple.com/thread/5586872。
当我有更多的时间时,我会取消其中一些项目并进行测试。
【讨论】:
以上是关于无法创建目录 /var/teamsserver的主要内容,如果未能解决你的问题,请参考以下文章