特定のユーザーにSSH公開鍵認証を強制する


10

特定のユーザーに公開鍵でのログインを強制し、他のユーザーにパスワードでのログインを許可することは可能ですか?公開鍵認証(パスフレーズを使用)はパスワードのみの認証よりも強力であるため、公開鍵を使用してログインするにはsudoerに要求します。ただし、通常のユーザーに強制することはあまり便利ではありません。ではsshd_config、ポリシー関連の設定は表示されません。

回答:


11

いくつかのオプションがあります。この回答では、sudoersグループが定義されていると想定します。

見てくださいsshd_configmanページを、と探しMatchディレクティブ。これにより、ssh接続のサブセットにのみ適用される構成ブロックを指定できます。あなたはこのようなことをすることができます:

Match Group sudoers
PasswordAuthentication no
ChallengeResponseAuthentication no

理論的には、sudoersグループ内のユーザーによる認証の試行に失敗するだけのPAM構成でも、同様のことを実行できます。これにはおそらくpam_succeed_ifモジュールが関係します... authsshdの設定に次のようなものを追加できます:

auth        requisite     pam_succeed_if.so user notingroup sudoers quiet

つまり、sudoersPAMを介して認証できるのは、グループに参加していない人だけです。これはテストされていないことに注意してください。pam_listfileモジュールを使用して同様のことを行うこともでき ます。


1
ありがとう!また、MatchディレクティブはOpenSSH 5.0で導入されていることにも注意してください。CentOSのような保守的なディストリビューションでは、ネイティブで利用できない場合があります。
Crend King、2011

これはOpenSSH 7.7p1を壊します-再起動させるには、ChallengeResponseAuthenticationディレクティブを削除する必要がありました。
rbsec 2018

2

@larsksとして、答えは私のバージョンでは動作しませんでしたもう一つの可能な答えは、ssh_d私のバージョンでは、ドキュメントを使用しているように見えるようが見つかりました。ここに:述べています

Matchキーワードに続く行では、キーワードのサブセットのみを使用できます。利用可能なキーワードはです。。。

そのキーワードのリストには、以下は含まれませんChallengeResponseAuthentication

私が見つけた本当に楽しい方法はAuthenticationMethods、あなたの場合は次のように機能するものを使用することでした:

Match Group sudoers
AuthenticationMethods 'publickey'

AuthenticationMethods サーバーにアクセスする前にユーザーが渡す必要のある一連のメソッドを表すコンマ区切り値のリストを受け取ります。

AuthenticationMethods 'publickey,password' ユーザーに公開鍵とパスワードを渡して強制することになります。

もっと読むためにman sshd_config

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.