Bitbucket 管道 - SCP 部署 - 失败“身份文件 /opt/atlassian/pipelines/agent/ssh/id_rsa_tmp 无法访问:没有这样的文件或目录。”

问题描述 投票:0回答:1

我正在尝试添加 bitbucket 管道以将我的角度应用程序部署到我们的一台服务器。

我在服务器上配置了 SSH,我可以在 Bitbucket 中的已知主机下获取主机的指纹

下面是我的 YAML 文件。

image: node:14

pipelines:
  branches:
    master:
      - step:
          name: Building Test angular application
          caches:
            - node
          script:
            - echo "npm install in progress.."
            - npm install
            - echo "Installing angular/cli..."
            - npm install -g @angular/cli
            - echo "Starting the Build process.."
            - ng build
          artifacts:
            - dist/** # Save build for next steps
      - step:
          name: "Deployment"
          script:
            - pipe: atlassian/scp-deploy:0.3.3
              variables:
                USER: $USER
                SERVER: $SERVER
                REMOTE_PATH: '/c/testscp/'
                LOCAL_PATH: 'dist/*'
                SSH_KEY: $MY_SSH_KEY

第一步运行良好,没有任何问题,我可以看到 dist 文件夹被添加到工件中,但是第二步失败并出现以下错误。

scp -rp -i /opt/atlassian/pipelines/agent/ssh/id_rsa_tmp dist/TestPipelineApplication <<USER>>@<<SERVERIP>>:/c/testscp/
Warning: Identity file /opt/atlassian/pipelines/agent/ssh/id_rsa_tmp not accessible: No such file or directory.
Load key "/root/.ssh/pipelines_id": invalid format
Permission denied, please try again.
Permission denied, please try again.
<<USER>>@<<SERVERIP>>: Permission denied (publickey,password,keyboard-interactive).

我以前从未配置过管道,所以我不完全确定我在这里缺少什么。

另外,我查看了以下文档,但没有运气

https://bitbucket.org/atlassian/scp-deploy/src/1.0.1/README.md

非常感谢任何帮助或建议。

ssh bitbucket bitbucket-pipelines
1个回答
0
投票

我知道这个问题已经很老了,但我希望当我将相同的错误消息复制到 Google 时,这可以帮助任何与我处于相同位置的人:

我遇到了完全相同的问题,不幸的是,由于有关管道及其配置的文档非常混乱,这需要大量的试验和错误。

首先要做的事情之一就是简化 YAML 脚本:

    - step:
        name: Deployment
        script:
          - pipe: atlassian/scp-deploy:0.3.3
            variables:
              USER: $USER
              SERVER: $SERVER
              REMOTE_PATH: '/c/testscp/'
              LOCAL_PATH: 'dist/*'

您不需要在 YAML 本身中链接 SSH,而是在存储库的设置中链接。

为此,您需要在 存储库设置/管道/SSH 密钥

中生成 SSH 密钥对

这是我感到非常困惑的地方,因为我试图使用我生成的相同密钥对来访问我的主机,事实证明这很难配置。我发现 Manuel Bosi here 写了一篇非常有用的文章,这篇文章非常容易理解,基本上让我知道了拥有密钥对和识别我的主机服务器的存储库。

下一步是将生成的公钥复制到主机服务器上。

所有 SSH 密钥(无论如何在 Linux 上)都存储在文件 ~/.ssh/authorized_keys 中。该文件的格式化方式是,每一行都是不同的关键规范,空行和以 # 开头的行将被忽略并被视为注释。您可以在此处阅读有关完整格式选项的更多信息。

因此,只需将 Bitbucket 中的公钥复制到该文件的新行即可,瞧! SCP 管道已通过身份验证,秩序已恢复。

对我来说,这是我 CI/CD 之旅的开始,我对测试和部署可以实现的潜在自动化感到非常兴奋。

希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.