如何在构建期间使用 SSH

有时,您可能想在项目构建期间连接不同的机器。 例如,通过 SSH 触发远程机器上的部署脚本。

来看看这是怎么做到的。

为什么使用 SSH?

Secure Shell (SSH) 因其安全性、通用性和高效性而被广泛用于各种用途。 以下是使用 SSH 的几个原因

  • 安全通信。 SSH 在不安全的网络(例如互联网)上提供加密通信,确保传输过程中数据的机密性和完整性。
  • 身份验证。 SSH 使用公钥加密技术进行用户身份验证,为基于密码的身份验证提供了更安全的替代方案。 这有助于防止未授权访问。
  • 远程访问。 SSH 允许用户安全访问远程服务器或计算机,提供命令行界面或启用文件传输(例如,使用 SCP 或 SFTP 等工具)。
  • 隧道。 SSH 可以创建安全隧道来转发任意网络连接,提供安全方式访问远程网络上的数据库或 Web 服务器等服务。
  • 密钥管理。 SSH 支持使用 SSH 密钥,这简化并增强了身份验证的安全性。 它还允许通过密钥对管理访问。

如何在 TeamCity 中上传 SSH 密钥

转到 Edit configuration | Build Steps(编辑配置 | 构建步骤)快速查看构建步骤。

tutorials-img

假设您要添加一个执行部署的命令行构建步骤。 为此,TeamCity 通过 SSH 连接到远程服务器并在服务器上执行几个命令,例如从 Amazon S3 下载并执行文件。 为了使 SSH 连接正常工作,您需要指定 SSH 密钥。

tutorials-img

问题是:如果 SSH 密钥没有预烘焙到代理镜像中,那么它如何到达您的构建代理?

What we want to do is to get rid of the command line build step. To do that, click on the Runner type drop-down menu. 这里有两个选项:SSH ExecSSH Upload

SSH Exec is convenient for when you want to execute something on a remote machine. SSH Upload 有助于将文件安全上传到服务器。

我们将选择选项 SSH Exec,为运行程序添加目标和命令。

tutorials-img

Authentication method(身份验证方法)下,您可以选择 SSH 密钥的来源。

tutorials-img

Uploaded key: The key is uploaded to the TeamCity server. 服务器会将其加密,发送至构建代理进行构建,然后在构建完成后将其删除。

Default private key(默认私钥)和 Custom private key(自定义私钥):如果您在构建代理的特定位置预安装了默认私钥,则选择此选项。

您也可以选择用户名-密码组合,甚至是运行中的 SSH 代理。 阅读我们的文档,详细了解 SSH Exec。

在本教程中,我们将使用 Uploaded key(已上传的密钥)选项。 我们将用户名设为 teamcity-deploy,并跳过密码短语设置。 然后,我们将上传 SSH 密钥。

tutorials-img

要上传 SSH 密钥,转到 Buildpipelines project | SSH Keys(构建管道项目 | SSH 密钥)。 接下来,我们将为服务器选择私钥。 点击 Upload SSH Key(上传 SSH 密钥)并从计算机中选择一个文件。

tutorials-img

接下来,返回 Build steps | SSH Exec(构建步骤 | SSH Exec)并选择您刚刚上传的私钥。 然后,点击 Save(保存)并运行构建。

tutorials-img

在构建完成运行后,打开 Build Log(构建日志),您将看到 SSH Exec 构建步骤的输出。 在这里,您可以看到 TeamCity 执行了您在构建步骤配置中输入的命令。 它还将显示 echo ‘running deploy.sh...’ 命令的结果。

tutorials-img

就是这样!