在Bitbucket管道中使用SSH进行基本交付

时间:2017-11-10 05:19:58

标签: ssh continuous-integration bitbucket devops bitbucket-pipelines

这是我到目前为止所得到的:

我在我的repo中生成了一个SSH密钥对,并且还将公钥添加到远程主机上的〜/ .ssh / authorized_keys。

我的远程主机已禁用root用户和密码登录以确保安全性。我把我用的SSH用户名手动登录到名为SSH_USERNAME的环境变量中。

这是我不知道该怎么做的地方。我该如何填写我的bitbucket-pipelines.yml?

以下是该文件的原始内容......我应该添加什么?

# This is a sample build configuration for JavaScript.
# Check our guides at https://confluence.atlassian.com/x/14UWN for more examples.
# Only use spaces to indent your .yml configuration.
# -----
# You can specify a custom docker image from Docker Hub as your build environment.
image: samueldebruyn/debian-git

pipelines:          
  branches:
    master:
    - step:
        script: # Modify the commands below to build your repository.          
         - sftp $FTP_USERNAME@192.241.216.482

1 个答案:

答案 0 :(得分:0)

首先:您应该为您的回购添加密钥对。证书永远不应该在回购中。

将用户名定义为环境变量是个好主意。您应该使用密钥对的私钥执行相同操作。 (但是你必须对其进行Bas64编码 - 请参阅Bb Pipelines文档 - 并将其标记为安全,因此在repo设置中不可见。)

然后,在您真正想要连接之前,您必须确保管道的SSH设置已知私钥(当然,Base64已解码)。

基本上,您需要在script(直接或在shell脚本中)执行的操作是:

- echo "$SSH_PRIVATE_KEY" | base64 --decode > ~/.ssh/id_rsa
- chmod go-r ~/.ssh/id_rsa
顺便说一句,我建议还将主机的IP放在一个env变量中。