Fastlane 匹配无法通过 SSH 连接

mmv*_*vie 5 git ssh match jenkins fastlane

现有解决方案

在问我的问题之前,我已经广泛搜索了 SO 和 Github。现有主题都没有为我们的设置提供任何可行的解决方案。

配置

我们在远程 macOS 机器上配置了 Jenkins + Fastlane。Fastlane 匹配应该通过 SSH 从专用存储库获取签名凭据(证书 + 配置文件)。

问题

SSH 连接失败(挂起)。詹金斯控制台输出:

INFO [2019-04-09 14:09:29.05]: Cloning remote git repo...
INFO [2019-04-09 14:09:29.05]: If cloning the repo takes too long, you can use the `clone_branch_directly` option in match.
INFO [2019-04-09 14:09:29.05]: [36m$ git clone ssh://git@xxx.xx.x.xxx:xxxx/cert/ios-certificates-profiles.git /var/folders/_redacted_[0m
INFO [2019-04-09 14:09:29.07]: ? [35mCloning into '/var/folders/_redacted_'...[0m
INFO [2019-04-09 14:09:29.19]: ? [35mThe authenticity of host '[xxx.xx.x.xxx:xxxx]:xxxx ([xxx.xx.x.xxx:xxxx]:xxxx)' can't be established.[0m
INFO [2019-04-09 14:09:29.19]: ? [35mRSA key fingerprint is _REDACTED_.
Run Code Online (Sandbox Code Playgroud)

在同一台机器上从终端运行“git clone ssh://git@xxx.xx.x.xxx:xxxx/...”命令:

  • 成功克隆存储库
  • 将主机添加到 known_hosts 文件

詹金斯仍然坚持使用 fastlane match 命令。任何想法为什么 Jenkins 无法通过 SSH 连接到存储库?我错过了什么?

编辑

将clone_branch_directly选项添加到匹配命令没有任何效果,命令仍然挂起。

Von*_*onC 9

首先尝试在变量GIT_SSH_COMMAND设置为“ ssh -vvv”的环境中启动 Jenkins 的相同操作:当 Git 尝试使用 SSH URL 进行克隆时,它将为您提供完整的跟踪。

该OP mmvie确认的评论:

向 SSH 添加详细日志记录显示 Jenkins 以sudo.
运行詹金斯不作为须藤和指向正确的SSH密钥解决了这个问题。


其他可能性:

fastlane 问题 5473提到了 known_hosts 问题,但如果已经添加了远程服务器指纹(假设您的 Jenkins 使用与您自己的 shell 会话相同的帐户运行),则检查您的私钥是否受密码保护:

FWIW,当我ssh-add -D然后运行fastlane certs(运行匹配)时,我得到完全相同的行为。它挂在“克隆远程 git repo...”上,这是预期的行为。' ssh-add' 解决问题。

在fastlane 问题 7482 中相同:

想通了......在一个新盒子上并且没有将我的密钥添加到ssh-agent。

ssh-add -K ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

其他可能性:fastlane 问题 11732:

我也在 CircleCi 2.0 上遇到了这个问题

在我的 Circle 2.0 环境配置中设置它有帮助

environment:
  TERM: xterm-256color
Run Code Online (Sandbox Code Playgroud)

因此,请检查您的$TERM环境变量值。


Jai*_*udo 7

我解决了类似的问题

ssh-keyscan myserver.com >> ~/.ssh/known_hosts