调试与SSH

本文档的以下部分描述了如何在CircleCI 2.0上使用SSH访问构建容器:

概述

通常,解决问题的最佳方法是通过SSH进入作业并检查日志文件、正在运行的进程和目录路径等内容。CircleCI 2.0提供了通过SSH访问所有作业的选项。阅读我们的博客关于使用SSH调试CI/CD管道。

当您使用SSH登录时,您正在运行一个交互式登录shell。您可能在命令第一次失败的目录上运行该命令,您可以从命令失败的地方的上一层目录运行该命令。~ /项目/~ /)。无论哪种方式,您都不会启动一个干净的运行(您可能希望执行)松材线虫病ls以确保您在正确的目录中)。

请注意,默认的CircleCI管道在非交互式shell中执行步骤,因此,使用交互式登录运行的步骤可能会成功,而在非交互式模式下会失败。

步骤

  1. 确保您已经向您的GitHubBitbucket都帐户。

  2. 要启动启用SSH的作业,请从“Rerun Workflow”下拉菜单中选择“使用SSH重新运行作业”选项。

    注意:用SSH重新运行作业特性用于调试目的;因此,这些作业将不会反映在管道中。当您使用SSH重新运行一个作业时,不会触发一个新的管道;作业只是重新运行。如果需要,您可以通过遗留作业视图访问正在运行的作业。

  3. 要查看连接的详细信息,展开作业输出中的“Enable SSH”部分,您将在其中看到连接所需的SSH命令。

    详细信息将再次显示在作业末尾的“Wait for SSH”部分中。

  4. SSH到正在运行的作业(使用与GitHub或Bitbucket相同的SSH密钥),以执行所需的故障排除。

如果您正在使用Windows执行器,那么在使用SSH时,您将需要传入您想要使用的shell。例如,运行powershell在您的构建中,您将运行:ssh -p —powershell.exe。考虑阅读Windows上的Hello World通过文档了解更多信息。

构建VM将保持可用的SSH连接构建运行完成后10分钟然后自动关机。(或者你也可以取消。)在SSH进入构建版本之后,连接将保持打开两个小时

请注意:如果您的作业有并行步骤,则CircleCI启动多个VM来执行它们。因此,您将在构建输出中看到多个“启用SSH”和“等待SSH”部分。

调试:“权限被拒绝(公钥)”

如果您在尝试SSH到您的工作时遇到权限问题,请尝试以下事情:

使用GitHub/Bitbucket确保身份验证

可以使用一个命令来测试您的密钥是否按预期设置好了。GitHub运行:

ssh git@github.com

或Bitbucket运行:

ssh独立电视git@bitbucket.org

你应该看到:

$你好:用户名!你已经成功地验证……

对于GitHub或Bitbucket:

$以:用户名登录。

如果你看到这样的输出,您需要开始使用GitHub解决SSH密钥故障/用Bitbucket解决SSH密钥故障

确保身份验证为正确的用户

如果您有多个帐户,请再次确认您是正确的!

为了SSH进入CircleCI构建,用户名必须能够访问正在构建的项目!

如果您身份验证为错误的用户,您可以通过提供不同的SSH密钥来解决这个问题ssh -我。如果您需要帮助,请参阅下一节,以确定提供的是哪个键。

确保向CircleCI提供了正确的密钥

如果您已经验证您可以认证为正确的用户,但是您仍然得到CircleCI的“拒绝许可”,那么您可能向我们提供了错误的凭据。(发生这种情况的原因有很多,具体取决于您的SSH配置。)

通过运行以下程序,找出提供给GitHub的认证密钥:

$ ssh -v git@github.com #或$ ssh -v git@bitbucket.com

在输出中,寻找这样的序列:

提供RSA公钥:/Users/me/。ssh / id_rsa_github <…>调试:身份验证成功(公钥)。

这个序列表示键/Users/me/。ssh/id_rsa_github是GitHub接受的。

接下来,为您的CircleCI构建运行SSH命令,但是添加-v标志。在输出中,查找像这样的一行或多行:

提供RSA公钥:…

确保GitHub接受的密钥(在我们的示例中为/Users/me/.ssh/id_rsa_github)也提供给了CircleCI。

如果未提供,则可以通过-我SSH的命令行参数。例如:

$ ssh -i /Users/me/。ssh/id_rsa_github -p 64784 ubuntu@54.224.97.243

另请参阅

GitHub和Bitbucket的集成