我正在尝试使用此管道将 gitlab 存储库部署到 gitlab ci 管道中的服务器
stages:
- deploy
deploy:
stage: deploy
only:
- main
before_script:
- apk add --update --no-cache openssh
- install -m 600 -D /dev/null ~/.ssh/id_rsa
- echo "$SSH_PRIVATE_KEY" | base64 -d > ~/.ssh/id_rsa
- cat ~/.ssh/id_rsa
- ssh-keyscan -H $SSH_HOST > ~/.ssh/known_hosts
- echo $SSH_USER
- echo $SSH_HOST
script:
- ssh $SSH_USER@$SSH_HOST "cd $WORK_DIR && git checkout $MAIN_BRANCH && git pull && exit"
after_script:
- rm -rf ~/.ssh
变量名称保存预期的数据,并且在执行后我已经调试了存储在该运行程序中的私钥,before_script
看起来与我尝试连接的机器上的私钥相同,并且所有其他变量都有正确的值。
但是当我运行这个管道时,我在尝试 ssh 到部署服务器时收到这些错误
Permission denied, please try again.
Permission denied, please try again.
SSH_USER@SSH_HOST : Permission denied (publickey,password).
(为了更好地理解,用户和主机的值被替换为变量名称)。
奇怪的是,我可以在没有密码的情况下从我的计算机上 ssh 到该服务器,没有任何问题。
我应该补充一点,docker gitlab runner 上的操作系统是Alpine
,部署服务器上的操作系统是Debian 11
。
有谁知道为什么我的部署服务器无法使用正确的私钥识别此 SSH 登录?