Fastlane 匹配无法通过 SSH 连接
Fastlane match cannot connect over SSH
现有解决方案
在问我的问题之前,我已经广泛搜索了 SO 和 Github。 None 个现有主题为我们的设置提供了任何可行的解决方案。
配置
我们已经在远程 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_.
运行 来自同一台机器上终端的 "git clone ssh://git@xxx.xx.x.xxx:xxxx/..." 命令:
- 克隆存储库成功
- 将主机添加到 known_hosts 文件
Jenkins 仍然挂在 fastlane match 命令上。知道为什么 Jenkins 无法通过 SSH 连接到存储库吗?我错过了什么?
编辑
给match命令加上clone_branch_directly
选项没有效果,命令还是挂了
首先尝试在变量 GIT_SSH_COMMAND
设置为“ssh -vvv
”的环境中启动 Jenkins 的相同操作:这将在 Git 尝试和克隆时为您提供完整的跟踪使用 SSH URL.
OP mmvie confirms :
Adding verbose logging to SSH revealed Jenkins was ran as sudo
.
Running Jenkins not as sudo and pointing to the correct SSH keys resolved the issue.
其他可能性:
fastlane issue 5473 提到 known_hosts 问题,但是如果远程服务器指纹已经添加(假设你的 Jenkins 是 运行 相同的帐户 作为您自己的 shell 会话),然后检查您的私钥是否受密码保护:
FWIW, when I ssh-add -D
and then run fastlane certs
(which runs match), I get the exact same behavior. It hangs on "Cloning remote git repo..." That's expected behavior. 'ssh-add
' fixes things.
在fastlane issue 7482中相同:
Figured it out...was on a new box and hadn't added my key to ssh-agent.
ssh-add -K ~/.ssh/id_rsa
其他可能性:fastlane issue 11732:
I'm running into this on CircleCi 2.0 as well
Setting this in my environment configuration on Circle 2.0 helps
environment:
TERM: xterm-256color
因此请检查您的 $TERM
环境变量值。
我在快车道匹配步骤中冻结了 Circle CI 上的任务。原因是我 运行 'checkout' 踩到 linux 并将它扔到 macos vm 上。所以 'checkout' 命令是在 macOS 机器上设置的,ssh 不知道 bitbucket 主机名。
通过向 macos env 作业添加额外的 'checkout' 命令解决了这个问题。这需要一点时间,因为一切都由工作区同步。
我用
解决了类似的问题
ssh-keyscan myserver.com >> ~/.ssh/known_hosts
现有解决方案
在问我的问题之前,我已经广泛搜索了 SO 和 Github。 None 个现有主题为我们的设置提供了任何可行的解决方案。
配置
我们已经在远程 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_.
运行 来自同一台机器上终端的 "git clone ssh://git@xxx.xx.x.xxx:xxxx/..." 命令:
- 克隆存储库成功
- 将主机添加到 known_hosts 文件
Jenkins 仍然挂在 fastlane match 命令上。知道为什么 Jenkins 无法通过 SSH 连接到存储库吗?我错过了什么?
编辑
给match命令加上clone_branch_directly
选项没有效果,命令还是挂了
首先尝试在变量 GIT_SSH_COMMAND
设置为“ssh -vvv
”的环境中启动 Jenkins 的相同操作:这将在 Git 尝试和克隆时为您提供完整的跟踪使用 SSH URL.
OP mmvie confirms
Adding verbose logging to SSH revealed Jenkins was ran as
sudo
.
Running Jenkins not as sudo and pointing to the correct SSH keys resolved the issue.
其他可能性:
fastlane issue 5473 提到 known_hosts 问题,但是如果远程服务器指纹已经添加(假设你的 Jenkins 是 运行 相同的帐户 作为您自己的 shell 会话),然后检查您的私钥是否受密码保护:
FWIW, when I
ssh-add -D
and then runfastlane certs
(which runs match), I get the exact same behavior. It hangs on "Cloning remote git repo..." That's expected behavior. 'ssh-add
' fixes things.
在fastlane issue 7482中相同:
Figured it out...was on a new box and hadn't added my key to ssh-agent.
ssh-add -K ~/.ssh/id_rsa
其他可能性:fastlane issue 11732:
I'm running into this on CircleCi 2.0 as well
Setting this in my environment configuration on Circle 2.0 helps
environment:
TERM: xterm-256color
因此请检查您的 $TERM
环境变量值。
我在快车道匹配步骤中冻结了 Circle CI 上的任务。原因是我 运行 'checkout' 踩到 linux 并将它扔到 macos vm 上。所以 'checkout' 命令是在 macOS 机器上设置的,ssh 不知道 bitbucket 主机名。
通过向 macos env 作业添加额外的 'checkout' 命令解决了这个问题。这需要一点时间,因为一切都由工作区同步。
我用
解决了类似的问题ssh-keyscan myserver.com >> ~/.ssh/known_hosts