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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA