警告:未经保护的私人密钥文件!使用Bitbucket管道和SSH

时间:2018-03-28 09:27:23

标签: ssh permissions bitbucket bitbucket-pipelines

我正在使用Git并尝试使用Bitbucket Pipelines部署到我的远程服务器。

在阅读了几篇关于此的帖子并看到其他人尝试的内容之后,我使用以下代码:

# This is a sample build configuration for PHP.
# Check our guides at https://confluence.atlassian.com/x/e8YWN 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:
    default:
        - step:
            script:
                - umask 077 - echo $MY_SSH_KEY | base64 --decode > ~/.ssh/id_rsa

                - scp -i ~/.ssh/id_rsa -P $SERVER_PORT -r $DIRECTORY_TRANSFER_LIST $USERNAME@$SERVER_IP_ADDRESS:~/site

要指出的是,环境变量是:

DIRECTORY_TRANSFER_LIST:这是我没有www的域名。即domain.co.uk

MY_SSH_KEY:我尝试了公钥和私钥,但似乎没有什么区别。

SERVER_PORT:22

我实际上不确定图像的含义以及为什么此链接在这里,这可能是我的问题?

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/root/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/root/.ssh/id_rsa": bad permissions
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
lost connection

在准备了关于相同错误消息的另一篇文章之后,虽然与Bitbucket Pipelines没有关系。建议将chmod更改为400。

所以我ssh进入远程服务器并将id_rsa的权限更改为400:

cd ~/.ssh
chmod 400 id_rsa

但是当我重新运行管道时,这没有任何区别。

我不做什么?

2 个答案:

答案 0 :(得分:2)

你写“我ssh进入远程服务器” - 我认为这是问题,因为它听起来你试图修复部署项目的服务器的权限。 SSH检查客户端端的权限,在您的情况下,这是Docker镜像中的SSH密钥。这意味着您只需在chmodscriptumask之间添加scp

答案 1 :(得分:0)

我建议您按照以下文档将SSH密钥添加到管道:https://confluence.atlassian.com/bitbucket/use-ssh-keys-in-bitbucket-pipelines-847452940.html

这将消除您管理文件权限的需要,使旋转密钥变得更加容易,并且从配置中删除了一个相当混乱的命令。 (您的团队会为此而爱您!)

在管道获得适当的SSH密钥支持之前,umask 077 - echo $MY_SSH_KEY | base64 --decode > ~/.ssh/id_rsa方法是一种解决方法。