Đây là cấu hình làm việc của tôi. Một số người dùng đã bật trình xác thực và một số thì không và chỉ cho phép đăng nhập SSH bằng khóa công khai, không bao giờ được phép sử dụng mật khẩu.
Trong /etc/ssh/sshd_config,
Sử dụngPAM có
Mật khẩu Xác thực không
ChallengeResponseXác thực có
AuthenticationMethods khóa công khai, bàn phím tương tác
Giấy phépEmptyMật khẩu không
Trong /etc/pam.d/sshd,
# Xác thực Un*x tiêu chuẩn.
#@bao gồm xác thực chung
# Yêu cầu trình xác thực, nếu chưa được định cấu hình thì hãy cho phép
yêu cầu xác thực pam_google_authenticator.so gỡ lỗi nullok
yêu cầu xác thực pam_permit.so
@include comon-auth
phải bị vô hiệu hóa vì nó bao gồm pam_unix mà tôi không muốn sử dụng. Sau đó, bạn cần pam_permit
để xác thực thành công cho người dùng mà không cần trình xác thực (trong đó pam_google_authenticator
trả về bỏ qua thay vì vượt qua).
Điều này vẫn không cho phép đăng nhập root bằng khóa ssh; nhật ký sshd
sshd [1244501]: gây tử vong: Lỗi nội bộ: PAM auth đã thành công khi lẽ ra nó phải thất bại
Điều này được thảo luận tại Google Authenticator PAM trên SSH chặn đăng nhập root mà không cần 2FA .
Đã làm việc này như trên, tôi nghĩ việc thực thi 2FA cho một số nhóm nhất định bằng cách sử dụng cấu hình SSH như @zoredache đã đề xuất thực sự tốt hơn. Điều này dễ dàng cho phép bạn đưa vào danh sách trắng một số IP nhất định vì cũng không yêu cầu 2FA. Trong trường hợp này, sshd_config nói ví dụ
Sử dụngPAM có
Mật khẩu Xác thực không
ChallengeResponseXác thực có
#AuthenticationMethods bất kỳ # mặc định
Giấy phépEmptyMật khẩu không
Địa chỉ adm nhóm phù hợp *,!172.16.1.0/24
AuthenticationMethods khóa công khai, bàn phím tương tác
và /etc/pam.d/ssh nói
Xác thực Un*x tiêu chuẩn.
#@bao gồm xác thực chung
# Yêu cầu trình xác thực; SSH không nên cho phép bất kỳ người dùng nào không có nó
auth đủ pam_google_authenticator.so gỡ lỗi nullok
auth cần thiết pam_deny.so