
このパイプラインを使用して、gitlab ciパイプラインのサーバーにgitlabリポジトリを展開しようとしています。
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).
(理解を助けるために、user、hostの値は変数名に置き換えました。)
奇妙なことは、問題なくパスワードなしで自分のコンピュータからこのサーバーにSSH経由で接続できることです。
docker gitlab runerのOSはAlpine
、展開サーバーのOSはですDebian 11
。
配布サーバーが正しい秘密鍵を使用してこのSSHログインを認識しない理由を知っている人はいますか?