Amazon ec2 加载密钥时出错“/root/.ssh/id_rsa";:无效格式

Amazon ec2 加载密钥时出错“/root/.ssh/id_rsa";:无效格式,amazon-ec2,gitlab,gitlab-ci,Amazon Ec2,Gitlab,Gitlab Ci,我正在使用GitLab为我的django项目构建一个CI/CD。作为部署阶段的一部分,我有 deploy: stage: deploy script: - mkdir -p ~/.ssh - echo "$PRIVATE_KEY" | tr -d '\r' > ~/.ssh/id_rsa - cat ~/.ssh/id_rsa - chmod 700 ~/.ssh/id_rsa - eval "$(ssh-agent -s)" - s

我正在使用GitLab为我的django项目构建一个CI/CD。作为部署阶段的一部分,我有

deploy:
  stage: deploy
  script:
    - mkdir -p ~/.ssh
    - echo "$PRIVATE_KEY" | tr -d '\r' > ~/.ssh/id_rsa
    - cat ~/.ssh/id_rsa
    - chmod 700 ~/.ssh/id_rsa
    - eval "$(ssh-agent -s)"
    - ssh-add ~/.ssh/id_rsa
    - ssh-keyscan -H 'gitlab.com' >> ~/.ssh/known_hosts
    - chmod +x ./deploy.sh
    - scp  -o StrictHostKeyChecking=no -r ./.env ./docker-compose.prod.yml ec2-user@$EC2_PUBLIC_IP_ADDRESS:/home/ec2-user/app
    - bash ./deploy.sh
  only:
    - master
生成在
ssh add~/.ssh/id\u rsa
处崩溃,错误消息为
error loading key”/root/.ssh/id\u rsa:格式无效

我检查过有类似错误信息的人,没有一个问题与我正在做的事情相关

笔记
  • 我正在尝试部署到AmazonEC2
  • 我遵循这个教程,直到最后一点,一切似乎都很好

  • 我设法在aws irc频道的人的帮助下修复了它

    问题

    我生成了PKCS#1密钥格式,而不是PKCS#8格式。 PKCS#1表示为:

    -----BEGIN RSA PRIVATE KEY-----
    BASE64 ENCODED DATA
    -----END RSA PRIVATE KEY-----
    
    -----BEGIN PRIVATE KEY-----
    BASE64 ENCODED DATA
    -----END PRIVATE KEY-----
    
    PKCS#8表示为:

    -----BEGIN RSA PRIVATE KEY-----
    BASE64 ENCODED DATA
    -----END RSA PRIVATE KEY-----
    
    -----BEGIN PRIVATE KEY-----
    BASE64 ENCODED DATA
    -----END PRIVATE KEY-----
    
    解决方案

    我只是复制了私钥并在这里进行了转换

    你也可以在这里看到更好的解释

    已编辑 如下所示,使用网站进行转换不是一个好主意。特别是当您的私钥可能被 发送到他们的服务器。相反,按照指示在本地进行转换
    通过@csgeek

    我遇到了这样的问题,错误是“错误加载密钥”/root/.ssh/id\u rsa:无效格式“这是由于受保护的变量,它只应用于受保护的分支。我的意思是,如果在未受保护的分支上使用受保护的变量,它将无法识别该变量,因此无法识别它


    您是将私钥变量设置为file还是var?你能粘贴echo$PRIVATE_KEY的输出,屏蔽该值吗?
    PRIVATE_KEY
    设置在哪里?我将其添加到gitlab中的环境变量中。我现在可以看到我的
    私钥的确切内容了。类似于“开始RSA私钥”——MIIEpAIBAAKCAQEA0jvxojw/f4fiyK3nvnWQagJ+nnTW+IeruETOsePsmGOpbM/V+yxk6knccbovqjm9up6/vhxzwu13kya6kgmmk+mpauvgdanieox5k2oqg6y J933x/awbdoahqhfd5rplflbq3ntu90fpclwtr8+NdZJeDBatVS/b/yjjjmx9idhgv xgxxxxjfx9a9ajw9aquw5g5g5g/f8wjv3f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8。。。。5DLOwRuU/hb8oatgzRGTGvx3PBKqO7xe+B7JVpJFgkJ3D6ZCWBN+g==----结束RSA私钥------```由于明显的原因,此值被屏蔽了您使用的执行器是谁?docker或kubernetes?可能值得注意的是,该站点将您的私钥发送到其服务器。我建议不要使用这样的网站来转换您的私钥。这是一种更好的本地模式: