スクリプトによるSSH認証を使用したgit pullの自動化(非対話型)

スクリプトによるSSH認証を使用したgit pullの自動化(非対話型)

Gitを介して非対話式に自動更新したいUbuntu 20.04 Serverを実行するRaspberry Piがたくさんあります。

スクリプトは次のことを行います。

eval "$(ssh-agent -s)" ; ssh-add /home/michael/.ssh/terminal_github_deploy_key ; git -C /home/michael/terminal/src pull

このスクリプトは実際にPythonで書かれていますが、上記と同じことを行います。

cmds = []
cmds.append('eval "$(ssh-agent -s)"')
cmds.append(f'ssh-add {HOME_DPATH}/.ssh/terminal_github_deploy_key')
cmds.append(f'git -C {CHECKOUT_DPATH} pull')
cmd = ' ; '.join(cmds)
subprocess.check_call(cmd, shell=True)

この対話型警告を発生させることを除いて、うまく機能します。

The authenticity of host 'github.com (140.82.121.3)' can't be established.
ECDSA key fingerprint is SHA256:...
Are you sure you want to continue connecting (yes/no/[fingerprint])?

yes | ...研究によると、セキュリティ上の理由から意図的にパイプを許可しません(したがって動作しません)。警告が発生する原因が何であるかよくわかりません。 Gitで呼び出すSSHのようですが、無視する方法がわかりませんか?必ずしも使用する必要はありませんが、ssh-addこれを機能させる方法です。

ベストアンサー1

次のような他のスクリプトを書く必要はありません。予想される、あなたがいるときバニラ

最も簡単な方法は追加することです。Githubホストキー到着 .ssh/known_hosts

編集:サーバーが多く、サイトのコンテンツが別々のホストキーではないため、これは不可能です。

それ以外の場合は、次のものを使用できます。GitPythonオートメーション

おすすめ記事