Azure 管道连接到 ssh 服务器,然后将文件复制到其中
Posted
技术标签:
【中文标题】Azure 管道连接到 ssh 服务器,然后将文件复制到其中【英文标题】:Azure pipeline connect to an ssh server and then copy files into it 【发布时间】:2021-08-26 13:02:53 【问题描述】:我实际上是在尝试使用 Azure DevOps 管道通过 ssh 将文件发送到外部服务器。
首先,我上传了我用来连接服务器的私钥:Secure file。
然后,我按照那个文档Install SSH keys 的连接进行操作。
然后,我运行一个 node.js 项目来提取 dist 文件。
最后,我想使用 SSH 将我的 dist 文件复制到服务器,就像这个文档解释它Copy Files Over SSH task。
trigger:
- main
pool:
vmImage: ubuntu-latest
steps:
- task: NodeTool@0
inputs:
versionSpec: '10.x'
displayName: 'Install Node.js'
- script: |
cd front-react
npm install
npm run build
displayName: 'npm install and build'
# Install SSH key
# Install an SSH key prior to a build or deployment
- task: InstallSSHKey@0
name: localssh
inputs:
knownHostsEntry: 'xxx@1.1.1.1'
sshPublicKey: $(id_rsa)
sshKeySecureFile: privkey_file
- task: CopyFilesOverSSH@0
inputs:
sshEndpoint: localssh
contents: 'front-react/build/'
targetFolder: '/testssh'
readyTimeout: '20000'
问题是我不知道如何使用我的 SSH 连接进入 sshEndpoint 属性。
这与这篇文章 How to use public key in azure devops pipline copy files over SSH 有关,但没有明确说明如何使用该连接链接已安装的 ssh 和复制 ssh。
【问题讨论】:
【参考方案1】:公钥存储在您的远程计算机上。您需要将私钥上传到您的 SSH 服务连接(导航 Project settings > Service connections
)
之后,您可以使用 Copy files over SSH 任务来复制文件:
- task: CopyFilesOverSSH@0
displayName: 'Securely copy files to the remote machine'
inputs:
sshEndpoint: test
sourceFolder: '$(Build.SourcesDirectory)'
targetFolder: /home/azureuser/test
cleanTargetFolder: true
failOnEmptySource: true
请注意:我没有使用安装 SSH 密钥任务,而是使用了自托管代理。它对我有用。如果您想使用安装 SSH 密钥任务,请参考this document。
【讨论】:
感谢您的回答。我试过这种方式,但我无法建立 ssh 连接。我必须从预览功能中禁用新服务连接?以上是关于Azure 管道连接到 ssh 服务器,然后将文件复制到其中的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 JDBC 连接通过 SSH 隧道连接到 Azure DB
如何通过 SSH 在 azure devops 管道复制文件中使用公钥