私のSSHサーバーシステムには、user_Aとuser_Bという2人のユーザーがいます。 user_Bはリモートからログインする必要があるため、セキュリティ上の理由から秘密鍵を使用してログインすることができます。すべて動作します。私の質問:user_Aはローカルネットワークにログインするだけですので、ユーザー名/パスワードを使用してリモートでログインするのを防ぐことはできますか? sshdのマニュアルページによると、CIDR表記が許可されています。
私がしたこと:
#605433が提案されたので調整しました。AllowUsers [email protected]
AllowUsers [email protected]/24
#740700オファー:
Match 192.168.0.10/24
AllowGroups PrivateSubnetSshUsers
私のバージョンは次のとおりです
Match 192.168.10.0/24
AllowUsers user_A
驚いたことに、どちらの場合も、user_Aはまだ192.168.1.220でログインできます。やり直す前にいくつかのことを行いましたsystemctl restart sshd
。
私はここで何を見落としていますか?
答え1
まず、あなたの声明には単なるエラーではなくエラーが必要Match
です。そのバージョンでは、sshdを再起動しようとするとエラーメッセージが表示されます。受け取れませんでしたか?Match address 192.168.10.0/24
Match 192.168.10.0/24
Match
次に、アドレスではなくユーザー名を使用する必要があります。次は動作します。
Match user user_A
AllowUsers [email protected]/24
ところで。私のテストでは単独(つまりブロックではありません)も機能しますが(したがってテストするときに何か間違っていることは間違いありません)、制限されています。AllowUsers [email protected]/24
Match
他のすべてのユーザーuser_A以外のログイン別の言葉(そして、user_Aは指定されたネットワークでのみログインできます。)上記のブロック内では、Match
user_Aは指定されたネットワークでのみログインでき、他のすべてのユーザーはすべてのIPアドレスからログインできます。
答え2
私はとても恥ずかしいです。もちろん、イベントはRajが指摘したように解決されました。当惑した私の間違いは、常にsshd_configの代わりにssh_configを編集することでした。申し訳ありません。助けてくれてありがとうございます!
答え3
マニュアルによると(https://www.man7.org/linux/man-pages/man5/sshd_config.5.html)次のように動作する必要があります。
# Only user_B is allowed to login
AllowUsers user_B
# Only the group PrivateSubnetSshUsers is allowed to login from the network 192.168.10.0/24
Match Address 192.168.10.0/24
AllowGroups PrivateSubnetSshUsers
# user_B is not allowed to login with password
Match User user_B
PasswordAuthentication no
最初のオプションでは、user_B を除くすべてのユーザーをロックできます。 2番目のオプションは、特定のネットワークに接続されていてPrivateSubnetSshUsersグループのメンバーである場合はログインを許可します。 3番目のオプションは、user_Bがキーを使用するように強制します。
あまり簡単ではありませんが、作業を完了する必要があります。