回答:
これは、PermitRootLogin
ディレクティブを使用して実行できます。sshd_config
マンページから:
rootがssh(1)を使用してログインできるかどうかを指定します。引数は、「yes」、「without-password」、「forced-commands-only」、または「no」でなければなりません。デフォルトは「yes」です。
このオプションが「パスワードなし」に設定されている場合、パスワード認証はルートに対して無効になります。
以下はあなたが望むものを達成します:
PasswordAuthentication yes
PermitRootLogin without-password
ssh -o PreferredAuthentications=password root@host
特に安全ではないimho
Match
ブロックを使用して、ユーザーまたはグループ認証ごと、または接続の発信元のIPアドレスまたはホスト名ごとにいくつかのオプションを構成できます。
PasswordAuthentication yes
PermitRootLogin yes
Match User root
PasswordAuthentication no
私のサーバーでroot権限を付与するには、さらに制限的なアプローチがあります。これは、私のような妄想的な人にとっては興味深いかもしれません。何をするのか、どの順序で行うのかに注意してください。そうしないと、rootアクセスを取得できないシステムになってしまう可能性があります。
sugroup
次の行を追加することにより、特定のグループを作成します。このグループのメンバーはルートになることを許可され、このグループのキー認証のみを許可します。Match Group sugroup
PasswordAuthentication no
auth required pam_wheel.so group=sugroup
に配置し/etc/pam.d/su
ます。既にそこにある可能性があり、コメントを外すだけです。これは、sugroupのメンバーではないすべてのユーザーへのルートアクセスを拒否しますPermitRootLogin no
して、sshを介した直接ルートログインを拒否します/etc/ssh/sshd_config
。この構成を使用するには、キー認証とパスワードを使用してrootになる必要があります。認証方法に関係なく、sshを介した直接のルートアクセスを望まないため、このようにサーバーを構成しました。
service ssh restart
、サーバーで検証し、クライアントでキーなしで接続しようとしましたがssh -o PreferredAuthentications=password -o PubkeyAuthentication=no root@host
、実際にはパスワードでログインできませんでしたが、rootユーザーのキーではできました。