SSHキー認証を試みる前に成功したかどうかを確認できますか?

SSHキー認証を試みる前に成功したかどうかを確認できますか?

ユーザーの対話なしで実行する必要があるスクリプトがあり、いくつかのSSHポート転送を設定する必要があります。パスワードの入力を求められないでください。 SSHから続行するには、パスワードが必要な場合はスクリプトにエラーが発生するようにしたいと思います。

接続を試みる前に、SSHエージェントが特定のホストに接続するように正しく設定されていることをSSHに通知する方法はありますか?

ベストアンサー1

sshには、パスワードを求めるのではなく、単に失敗させる「BatchMode」オプションがあります。これは、スクリプトがパスワードを要求するかどうかを予測するよりもはるかに簡単に見えます。一つスーパーユーザーに関する同様の質問に答えるさまざまな対話型認証タイプがあるため、PasswordAuthenticationを無効にすることは常に機能するわけではなく、キーのパスワードを求めるプロンプトを表示できないようです。

を使用するssh -o BatchMode=yesか、ホストのssh_configに入れることができます。


また、制御端末がないと、sshはパスワードの入力を求めません(エラーが発生します)。 Do this特別にsshコマンドを使用して制御ttyなしでプロセスを開始できます(これにより、パスワードなどの入力を求めるメッセージread_passphrase: can't open /dev/tty: No such device or addresssetsid表示されません。sudo

プロセスを実行するとsetsidバックグラウンドで自動的に実行されるため(シェルには他のセッションのプロセスに対するジョブ制御がないため)、stdout / stderrをログファイル(および標準)にリダイレクトして準備する必要があります。 /dev/null に入力)。実行中のプログラムがsetsid標準入力から何かを読み取ろうとすると、バックグラウンドプロセスが端末を読み取らないようにする一般的なメカニズムが機能しないため、奇妙な結果が生じる可能性があります。

おすすめ記事