web-dev-qa-db-ja.com

鍵ベースの認証でのみ、ssh経由でのログインをrootに許可する

/etc/ssh/sshd_configの特定のsshサーバー構成についていくつか疑問があります。次の行動が欲しい:

  1. 公開鍵認証はrootとして認証する唯一の方法です(パスワード認証などはありません)。
  2. 通常のユーザーは両方を使用できます(パスワード認証と公開鍵認証)

PasswordAuthentication noを設定すると、最初のポイントは満たされますが、2番目のポイントは満たされません。 rootのみにPasswordAuthentication noを設定する方法はありますか?

55
mavillan

これを行うには、PermitRootLoginディレクティブを使用します。から sshd_configマンページ:

Rootがssh(1)を使用してログインできるかどうかを指定します。引数は、「yes」、「without-password」、「forced-commands-only」、または「no」である必要があります。デフォルトは「yes」です。

このオプションを「without-password」に設定すると、rootのパスワード認証が無効になります。

以下はあなたが望むものを達成します:

PasswordAuthentication yes
PermitRootLogin without-password
83
jordanm

Matchブロックを使用して、認証するユーザーまたはグループごと、または接続元のIPアドレスまたはホスト名ごとにいくつかのオプションを構成できます。

PasswordAuthentication yes
PermitRootLogin yes

Match User root
PasswordAuthentication no

私は私のサーバーにroot権限を付与するためのさらに制限的なアプローチをとっています。これは私のような偏執的な人にとって興味深いかもしれません。何をどの順序で行うかに注意してください。そうしないと、rootアクセスを取得できないシステムになってしまう可能性があります。

  • 特定のグループsugroupを作成します。whosメンバーはrootになることを許可され、次の行を入力することでこのグループのキー認証のみを許可します最後に sshd_confidの:

Match Group sugroup

PasswordAuthentication no

  • コマンドauth required pam_wheel.so group=sugroup/etc/pam.d/suに配置します。それはすでにそこにあるかもしれませんし、コメントを外す必要があります。これにより、sugroupのメンバーではないすべてのユーザーへのrootアクセスが拒否されます
  • 強力なrootパスワードを選択してください:)
  • 新しい認証方法が機能するかどうかを確認してください。
  • PermitRootLogin no/etc/ssh/sshd_configを使用して、ssh経由の直接rootログインを拒否します。

この構成を使用する場合、rootになるには鍵認証とパスワードを使用する必要があります。認証方法に関係なく、sshを介した直接のrootアクセスを望まないため、このようにサーバーを構成しました。

4
xwst