【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で接続してシェルを動かせると小手先ではあるが、細かい事もできるので大変便利だなと感じる今日この頃です。