如何通过 SSH 在 azure devops 管道复制文件中使用公钥

Posted

技术标签:

【中文标题】如何通过 SSH 在 azure devops 管道复制文件中使用公钥【英文标题】:How to use public key in azure devops pipline copy files over SSH 【发布时间】:2021-02-06 22:21:43 【问题描述】:

我正在尝试使用 Azure DevOps 将 Laravel 应用程序部署到 Bluehost 网站。

这个想法是,当我提交对我的存储库的更改时,管道将触发并运行 composer,然后部署到网站。

我遇到的问题是 Bluehost 的身份验证失败,即使我已经授权了 SSH 密钥(我可能只授权公共密钥)。

错误:无法连接到远程计算机。验证 SSH 服务连接详细信息。无法连接到远程机器。验证 SSH 服务连接详细信息。错误:所有配置的身份验证方法都失败..

我的理论是,DevOps 正在生成一个新的公钥来登录 BlueHost,但无法进行身份验证(因为它不是授权的公钥)。

我看到我可以使用“安装 SSH 密钥”任务;但是,我不明白如何在“通过 SSH 复制”任务中使用下载的密钥。

如何在 Azure DevOps 管道通过 SSH 复制任务中使用公钥?

【问题讨论】:

【参考方案1】:

使用Copy Files Over SSH任务的前提如下:

该任务支持使用 SSH 密钥对连接到远程 机器。 公钥必须预先安装或复制到远程 机器。

当您使用Install SSH Key 任务时,SSH 密钥会安装在远程计算机上。您无需在Copy Files Over SSH 任务中下载它。检查以下示例:

https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/install-ssh-key?view=azure-devops#example-setup-using-github

【讨论】:

哦,所以,安装 SSH 密钥并没有安装到处理部署的机器上。它正在将密钥安装到远程机器上? (这已经完成了)。我想我的问题是,如何将通过 SSH 复制文件与我添加到远程计算机的公钥一起使用? 您的远程机器上应该已经安装了公钥。创建 SSH 服务连接时,需要提供用户名+密码,或者提供私钥。检查以下链接:docs.microsoft.com/en-us/azure/devops/pipelines/library/…、docs.microsoft.com/en-us/azure/devops/pipelines/tasks/deploy/…。此外,此任务适用于运行 Linux 的目标机器。您的目标机器是否运行 Linux? 您的问题进展如何? 对不起,我在那儿病了一段时间。我可以通过部署 FTPS 来绕过它。问题未解决,因为授权仍然失败。目标机器确实在运行linux,并且公钥是授权的。 我今天能够让它工作 1. 我创建了一个 SSH 密钥对,并通过 CPanel 将两者上传到 Bluehost 2. 我授权了公钥。 3. 我备份了我的开发机器本地 ssh 密钥,并使用私钥 ssh 进入服务器。 4. 成功后,我将私钥的内容复制到 devops 的 SSH 服务中。 5. 我只为我的 SSH 连接运行了“通过 SSH 复制文件”,使用之前编辑的 SSH 服务。 (正如你所建议的) 6. 我运行了管道,它通过了! (不知道是不是一直都抄错了什么)

以上是关于如何通过 SSH 在 azure devops 管道复制文件中使用公钥的主要内容,如果未能解决你的问题,请参考以下文章

在 Azure DevOps 中创建项目 - 权限修正?

如何通过 Azure Devops 将 UWP 包发布到 Windows 应用商店?

如何在 Azure devops 中设置构建管道 [关闭]

作为 Azure DevOps 中发布管道的一部分,将更改推送到 GitHub 存储库

通过 azure devops 管道上传 .pfx 证书

如何在 azure devops YAML 管道中将单个代理用于多个作业/阶段