Amazon ec2 加载密钥时出错“/root/.ssh/id_rsa";:无效格式
我正在使用GitLab为我的django项目构建一个CI/CD。作为部署阶段的一部分,我有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
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:格式无效
我检查过有类似错误信息的人,没有一个问题与我正在做的事情相关
笔记
我设法在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?可能值得注意的是,该站点将您的私钥发送到其服务器。我建议不要使用这样的网站来转换您的私钥。这是一种更好的本地模式: