【CircleCI】ssh接続したのに処理が終了しない
push時にCircleCIでEC2にssh接続し、ソースをpullするといった処理を構築した際に
ssh接続はできそうなもののいつまでたっても処理が終わらない。
結論から言うと、初回ssh接続だった場合に確認が入るため処理が終了しなかった。
※対象のプロジェクトにsshキー等の設定ずみのものとします。
.config/config.yml
エラーが起きた時のConfigファイル。ssh接続し、pullする簡易的なもの
version: 2.1 orbs: python: circleci/python@0.2.1 jobs: deploy_job: executor: python/default steps: - checkout - add_ssh_keys - run: ssh -o StrictHostKeyChecking=no ${USER_NAME}@${HOST_NAME} 'cd test && git pull' workflows: deploy: jobs: - deploy_job: filters: branches: only: - main - develop
エラー内容
実行後のログは下記の通り。
終了していない場合はキャンセルすると全て表示されます。
#!/bin/bash -eo pipefail ssh ${USER_NAME}@${HOST_NAME} 'ls' The authenticity of host '************* (*************)' can't be established. ECDSA key fingerprint is SHA256:p2jC8P73aS+69Dz0RjaZm4Md07wO/QZ+hhR7/B71uOk. Are you sure you want to continue connecting (yes/no)? Build was canceled
Are you sure you want to continue connecting (yes/no)?
初回ssh接続時に確認されてしまう項目ですね。
Config修正
初回起動時には毎回確認されてしまうので、下記のオプションを追加
ssh -o StrictHostKeyChecking=no
これで毎回確認されることはなくなりました。
version: 2.1 orbs: python: circleci/python@0.2.1 jobs: deploy_job: executor: python/default steps: - checkout - add_ssh_keys - run: ssh -o StrictHostKeyChecking=no ${USER_NAME}@${HOST_NAME} 'cd test && git pull' workflows: deploy: jobs: - deploy_job: filters: branches: only: - main - develop
色々なサイトを除いたが、sshの起動確認等は行っていなかった様に思える
sshで接続してシェルを動かせると小手先ではあるが、細かい事もできるので大変便利だなと感じる今日この頃です。