非対話型でSSH接続を確立できない場合は、bashスクリプトを停止します。

非対話型でSSH接続を確立できない場合は、bashスクリプトを停止します。

スクリプトの作業中、特定の時点でgitを介してSSH接続を確立するBashスクリプトを開発しています。スクリプトの最後の部分が失敗する前に、スクリプトを停止して発生する可能性のあるいくつかのエラーを正常に処理しようとします。

git pushある時点では、SSHを介してプッシュを開始するために使用されたものと同様のコマンドが実行されます。新しいホストに初めて接続する場合は、ホストの検証を求めるインタラクティブなプロンプトが表示されることがあります。

RSA key fingerprint is 96:a9:23:5c:cc:d1:0a:d4:70:22:93:e9:9e:1e:74:2f.
Are you sure you want to continue connecting (yes/no)? yes

SSHホストが以前にユーザーの承認を受けていない場合は、SSHプロンプトを回避したり、スクリプトを早期に失敗したりする方法についてのアイデアを探しています。

私は見ましたこの問題。確かに、この質問はその質問と重複していますが、そこに記載されている解決策は私の場合は機能しません。プロンプトがないとSSH接続を確立できず、この場合失敗することを検出したいと思います。

ベストアンサー1

したがって、ホストを自動的に追加したくなく、known_hostsホストがまだ存在しない場合は、接続が失敗するようにしたいと思います。 (リンクされた質問に示されているように)これをStrictHostKeyChecking行うオプションはまだありますが。ホストキーがわからない場合、接続は失敗します。noyes

$ ssh -oStrictHostKeyChecking=yes [email protected]
No ECDSA host key is known for somehost.somewhere and you have requested strict checking.
Host key verification failed.

sshエラーが発生すると(この場合を含む)状態255で終了するため、スクリプトは次のようにテストできます。

if [ "$?" = 255 ] ; then
    echo "there was an error"
fi

もちろん、他のエラーがある可能性があるため、sshこれを確認するには出力を確認する必要があります。

おすすめ記事