SSHキーなしでrootアクセスが許可されていることを確認する

SSHキーなしでrootアクセスが許可されていることを確認する

SSHキーなしで特定のサーバーへのルートアクセスを取得できるかどうかをBASHで確認したいと思います。したがって、スクリプトはSSHキーなしでアクセスできることを確認する必要があります。私の試みは次のとおりです。 (医師コード)

/usr/bin/ssh -o BatchMode=yes -o PreferredAuthentications=password
if [[ "$?" == "255" ]]; then
    echo "root access possible without key"
else
    echo "not possbile"
fi

しかし、このコードは機能しません。エラーコードは常に同じだからです。サーバーにSSHキーが必要かどうか。私の質問は、サーバーにログインするためにSSHキーが必要かどうかを判断するためにどのコマンドを使用できるかということです。それとも確認できるエラーコードを提供するコマンドは何ですか?

私の目標は、まだSSHキーを使用していないサーバーを見つけるためにローカルネットワーク全体を検索することです。

ありがとう

ベストアンサー1

実際に正しいキーやパスワードを試したり、サーバー構成を確認しなくてもこれを行うことはできません。

sshd顧客にパスワードを尋ねることをお勧めします。PermitRootLogin prohibit-passwordパスワードを設定してもパスワードは決して機能しません。パスワードがあってもパスワードを聞いてみてPermitRootLogin no、パスワードを入力してもログインできません。私の記憶が正しい場合、実際にはPAMを介した認証の試みまで偽造し、無効であると知られているパスワードだけであるため、パスワード認証が許可されているかどうかはその時点からわかりません。などもこれにAllowUsers似ています。

もちろん、使用すると、クライアントがBatchModeパスワードを要求することは無効になるため(マンページの最初の項目)、組み合わせは-o BatchMode=yes -o PreferredAuthentications=passwordあまり役に立ちません。


実際にシステムにログインして、どの認証方法が機能しているかを確認する必要があります。そのキーを使用してログインできる場合は、そのキーが使用されています。パスワードを使用してログインできる場合は、そのパスワードが使用されています。ログインしたら、PermitRootLogin値がyes(デフォルトはprohibit-password)、そのルートにauthorized_keys含める必要があるキーが含まれており、他のキーがないことを確認してください。

おすすめ記事