调试与SSH
本文档的以下部分描述了如何在CircleCI 2.0上使用SSH访问构建容器:
概述
通常,解决问题的最佳方法是通过SSH进入作业并检查日志文件、正在运行的进程和目录路径等内容。CircleCI 2.0提供了通过SSH访问所有作业的选项。阅读我们的博客关于使用SSH调试CI/CD管道。
当您使用SSH登录时,您正在运行一个交互式登录shell。您可能在命令第一次失败的目录上运行该命令,或您可以从命令失败的地方的上一层目录运行该命令。~ /项目/
或~ /
)。无论哪种方式,您都不会启动一个干净的运行(您可能希望执行)松材线虫病
或ls
以确保您在正确的目录中)。
请注意,默认的CircleCI管道在非交互式shell中执行步骤,因此,使用交互式登录运行的步骤可能会成功,而在非交互式模式下会失败。
步骤
确保您已经向您的GitHub或Bitbucket都帐户。
要启动启用SSH的作业,请从“Rerun Workflow”下拉菜单中选择“使用SSH重新运行作业”选项。
注意:的
用SSH重新运行作业
特性用于调试目的;因此,这些作业将不会反映在管道中。当您使用SSH重新运行一个作业时,不会触发一个新的管道;作业只是重新运行。如果需要,您可以通过遗留作业视图访问正在运行的作业。要查看连接的详细信息,展开作业输出中的“Enable SSH”部分,您将在其中看到连接所需的SSH命令。
详细信息将再次显示在作业末尾的“Wait for SSH”部分中。
SSH到正在运行的作业(使用与GitHub或Bitbucket相同的SSH密钥),以执行所需的故障排除。
如果您正在使用Windows执行器,那么在使用SSH时,您将需要传入您想要使用的shell。例如,运行powershell
在您的构建中,您将运行:ssh -p
。考虑阅读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