公開鍵認証が失敗した場合は、スクリプト化されたSSHにパスワードを要求しないでください。

公開鍵認証が失敗した場合は、スクリプト化されたSSHにパスワードを要求しないでください。

私のユースケースは次のとおりです。何百台ものサーバーをリストし、特定のpublic key authenticationサーバーprivate key(Sshクライアント.sshディレクトリ)を使用してログインを許可するかどうかをテストするスクリプトがあります。これらのサーバーの一部は誤って構成されており、これらのサーバーのSSHサービスを制御できません。

これが私が今まで持っているものです:

ssh -o ConnectTimeout=2 -o PasswordAuthentication=no -q $x exit
returncode=$?

したがって、これは、いくつかのSSH構成エラー(たとえば、上記のリモートサーバーなど)が原因で問題のあるサーバーでエラーが発生するまで、これまでほとんどのサーバーで機能します(サーバーに接続できず、non-zeroサーバー0がログインできる可能性があります)ときに~/.ssh戻りコードを返す )。 。こここの状況で実行できる操作を説明する関連スレッド。

しかし、リモートサーバーを修正したくありません。 SSHが失敗しnon-zero、失敗したときに戻りコードで終了したいと思いますSSH key authentication

この問題を解決する方法についてのアイデアはありますか?

よろしくお願いします。

ベストアンサー1

timeout実行時間を制限することに加えて、以下を使用することもできますssh

timeout 10 ssh -o ConnectTimeout=2 -o PasswordAuthentication=no -q $x exit returncode=$?

または

timeout --preserve-status 10 ssh -o ConnectTimeout=2 -o PasswordAuthentication=no -q $x exit returncode=$?

適切なタイムアウトを選択します。負荷がひどい場合でも、2秒ConnectTimeout+ 8秒の実行時間exitで十分です。

おすすめ記事