bashスクリプトを使用してリモートサーバーを再起動し、SSH経由でログインしていくつかのコマンドを実行しました。私のスクリプトはほとんどの場合動作しますが、時には次のエラーで失敗します。
「システムが起動します。権限のないユーザーはまだログインできません。後でもう一度やり直してください。技術的な詳細については、pam_nologin(8)を参照してください。」
数秒待ってからやり直すと正常に動作します。現在、次のように接続を確認しています。
while ! nc -z $HOST 22; do
sleep 1
done
ssh $HOST '/opt/my script..sh'
sshdが実際に接続する準備ができていることを確認するために接続をテストするより良い方法はありますか?
ベストアンサー1
sshが接続を受け入れてコマンドを実行する準備ができているかどうかをテストするには、ssh
同様のものではなくsshを使用しますnc
。たとえば、
while ! ssh $HOST true; do
sleep 1
done
(a)リモートホストに正常に接続でき、(b)コマンドを実行できる場合にのみtrue
成功が返されます。