ต่อไปนี้จะทำให้ Google 2FA บังคับใช้สำหรับผู้ใช้ทุกคน
ยกเว้นผู้ใช้ที่เป็นของsudoและผู้ดูแลระบบกลุ่ม
(หมายถึงถ้าผู้ใช้จาก sudo กลุ่มหรือผู้ดูแลระบบไม่ได้มีการกำหนดค่า 2FA ก็จะรับรองความถูกต้องเขา / เธออยู่บนพื้นฐานกุญแจสาธารณะของพวกเขา):
ไฟล์: /etc/pam.d/sshd
auth required pam_google_authenticator.so nullok
auth optional pam_succeed_if.so user ingroup sudo
auth optional pam_succeed_if.so user ingroup admin
ไฟล์: /etc/ssh/sshd_config
AuthenticationMethods publickey,keyboard-interactive
UsePAM yes
ChallengeResponseAuthentication yes
ผล:
| Belongs to sudo or | Has 2FA Already Setup | Authentication Result
| admin group | in ~/.google_authenticator |
----------+----------------------+-----------------------------+------------------------
User A | NO | NO | DENIED LOGIN UNTIL 2FA IS SETUP
User B | YES | NO | CAN LOGIN (PRIVATE/PUBLIC KEY USED)
User C | NO | YES | CAN LOGIN (PRIVATE/PUBLIC KEY AND 2FA USED)
User D | YES | YES | CAN LOGIN (PRIVATE/PUBLIC KEY AND 2FA USED)
ตามเอกสาร README.md ของ Google Authenticator :
nullok
PAM ต้องการความสำเร็จอย่างน้อยหนึ่งคำตอบจากโมดูลและ nullok ทำให้โมดูลนี้บอกว่า IGNORE ซึ่งหมายความว่าหากใช้ตัวเลือกนี้อย่างน้อยหนึ่งโมดูลอื่นจะต้องมีความสำเร็จดังกล่าว วิธีหนึ่งในการทำเช่นนี้คือการเพิ่มการรับรองความถูกต้อง pam_permit.so ที่ส่วนท้ายของการกำหนดค่า PAM
สิ่งนี้ทำให้การใช้nullok
ที่นี่ปลอดภัย