加载键"/root/.ssh/pipelines_id":格式无效



我正在使用bitbucket管道在ec2-server上部署应用程序。

这是我的比特桶管道。yaml文件

image: atlassian/default-image:3
pipelines:
branches:
dev:
- step:
name: automated deployment
script:
- pipe: atlassian/scp-deploy:1.2.1
variables:
USER: 'ubuntu'
SERVER: $SERVER_IP
REMOTE_PATH: '/home/ubuntu/utags-test/server'
LOCAL_PATH: '${BITBUCKET_CLONE_DIR}/*' 
- pipe: atlassian/ssh-run:0.4.1
variables:
SSH_USER: 'ubuntu'
SERVER: $SERVER_IP
COMMAND: 'cd /home/ubuntu/utags-test/server;docker pull paranjay1/utags-paranjay:dev;docker-compose down;docker-compose up -d'
SSH_KEY: $SERVER_PRIVATE_KEY 
DEBUG: 'true'
services:
- docker   

运行管道时出错

Build setup13s
pipe: atlassian/scp-deploy:1.2.1
....
....
Digest: sha256:b9111f61b5824ca7ed1cb63689a6da55ca6d6e8985eb778c36a5dfc2ffe776a8
Status: Downloaded newer image for bitbucketpipelines/scp-deploy:1.2.1
INFO: Configuring ssh with default ssh key.
INFO: Adding known hosts...
INFO: Appending to ssh config file private key path
INFO: Applied file permissions to ssh directory.
✔ Deployment finished.
pipe: atlassian/ssh-run:0.4.1
....
....
Digest: sha256:b8ff5416420ef659869bf1ea6e95502b8fa28ccd5e51321e4832d9d81fdefc18
Status: Downloaded newer image for bitbucketpipelines/ssh-run:0.4.1
INFO: Executing the pipe...
INFO: Using passed SSH_KEY
INFO: Executing command on 13.235.33.118
ssh -A -tt -i /root/.ssh/pipelines_id -o StrictHostKeyChecking=no -p 22 ubuntu@13.235.33.118 bash -c 'cd /utags-test/server;docker pull paranjay1/utags-paranjay:dev;docker-compose down;docker-compose up -d'
Load key "/root/.ssh/pipelines_id": invalid format
Load key "/root/.ssh/pipelines_id": invalid format
ubuntu@13.235.33.118: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
✖ Execution failed.
  • 我已经在我的ec2服务器上安装了docker和docker-compose
  • 我在sshkey部分生成bitbucket上的密钥,并将bitbucket公钥添加到ec2-server上的authorized_keys文件中
  • $SERVER_PRIVATE_KEY包含ec2-server私钥
  • $SERVER_IP包含我的ec2-server公共IP

我如何解决这个问题,什么可能是这个错误的原因?

atlassian/ssh-run管道文档声明替代的SSH_KEY应该是base64编码的。我打赌你错过了那个信息位。

使用base64编码的备用SSH_KEY来代替在Bitbucket pipeline管理屏幕中配置的密钥(默认使用)。这应该按照文档中给出的使用多个ssh密钥的说明进行编码。

另一个好问题是:为什么不使用管道提供的ssh密钥呢?

您可以使用存储库SSH密钥,因此您不需要对其进行编码。

bitbucket.com/.../admin/addon/admin/pipelines/ssh-keys

然后删除SSH key变量,默认使用存储库SSH key。

您实际上不需要使用"SSH_KEY: $SERVER_PRIVATE_KEY">在你的烟斗里。你可以使用bitbucket_repo>repository_settings祝辞ssh_key。您可以在这里生成一个键。生成的公钥应该在远程服务器的"/home/ubuntu/.ssh/authorized_key"文件。将您的远程服务器公共ip添加到已知主机并获取指纹。

但是如果你想使用不同的ssh密钥,那么你必须添加"SSH_KEY: $SERVER_PRIVATE_KEY"在你的烟斗里。,

$SERVER_PRIVATE_KEY -本地机器的private_IP编码为base64

必须使用$base64 -w 0命令将密钥编码为base64

最新更新