Làm cách nào để vô hiệu hóa đăng nhập SSH bằng mật khẩu cho một số người dùng?


166

Trên Linux (Debian Squeeze), tôi muốn tắt đăng nhập SSH bằng mật khẩu cho một số người dùng (nhóm được chọn hoặc tất cả người dùng ngoại trừ root). Nhưng tôi không muốn vô hiệu hóa đăng nhập bằng chứng chỉ cho họ.

chỉnh sửa: cảm ơn rất nhiều cho câu trả lời chi tiết! Vì một số lý do, điều này không hoạt động trên máy chủ của tôi:

Match User !root
PasswordAuthentication no

... nhưng có thể dễ dàng thay thế bởi

PasswordAuthentication no
Match User root
PasswordAuthentication yes

Có lẽ đó là do vết lõm của bạn?
nil

7
Điều đáng nói là những dòng đó phù hợp phải ở cuối tập tin
zidarsk8

1
! root cũng không hoạt động với tôi. Cách tiếp cận thứ hai đã làm được mẹo.
natenho

Tôi đã thấy các trường hợp Match User "!root,*"đã làm công việc.
Roman Hocke

Câu trả lời:


181

Thử Matchtrong sshd_config:

Match User user1,user2,user3,user4
    PasswordAuthentication no

Hoặc theo nhóm:

Match Group users
    PasswordAuthentication no

Hoặc, như được đề cập trong bình luận, bằng cách phủ định:

Match User !root
    PasswordAuthentication no

Lưu ý rằng kết quả khớp có hiệu lực "cho đến khi một dòng Match khác hoặc cuối tập tin." (vết lõm không đáng kể)


4
thích Match user !rootcho trường hợp này
84104

1
Tuyệt vời, tôi không biết về cú pháp trận đấu. Tuy nhiên, một gợi ý tôi sẽ đưa ra là nếu đây là máy chủ đối mặt công khai, tôi sẽ không cho phép đăng nhập root thông qua SSH. Có lẽ không phải là một thỏa thuận lớn nếu nó là Nội bộ ..
Safado

4
@SpacemanSpiff Đó là những gì a) mật khẩu mạnh và b) denyhosts / fail2ban dành cho.
ceejayoz

2
@ deed02392 Bạn có thể coi một khóa là một mật khẩu thực sự, thực sự mạnh nếu bạn muốn.
ceejayoz

4
Nó mạnh hơn rất nhiều không phải trong cùng một công viên bóng, đó là quan điểm của tôi. Xác thực mật khẩu cũng nên được tắt cho root và các khóa chỉ được phép đăng nhập.
deed02392

22

Matchtrong sshd_configcông việc tốt Bạn nên sử dụng Match allđể kết thúc khối khớp nếu bạn đang sử dụng openssh 6.5p1 trở lên. Thí dụ:

PasswordAuthentication no
Match User root
PasswordAuthentication yes
Match all

Nó không hoạt động với tôi ...
Dimitrios

"Phù hợp với tất cả" đã lừa Cảm ơn bạn. Không có "Match all" sshd không khởi động được.
Vladimir Kondratyev

3

Có một số cách mà bạn có thể làm điều này - đầu tiên, bạn có thể chạy một daemon sshd thứ hai trên một cổng khác với cấu hình khác - một chút hack, nhưng với một số chroot hoạt động thì nó vẫn hoạt động tốt.

Ngoài ra, bạn có thể cho phép xác thực mật khẩu, nhưng khóa mật khẩu cho tất cả trừ một người dùng. Người dùng có mật khẩu bị khóa vẫn có thể xác thực bằng khóa chung.


-1

bạn có thể chỉ cần truy cập tệp / etc / ssh / sshd_config và thêm một dòng Để cho phép -> Cho phép người dùng user1 To Deny ---> DenyUsers user2

chúng tôi có thể cho phép / từ chối đăng nhập cho một nhóm máy chủ cụ thể bằng cách sử dụng các tệp hosts.allow hoặc hosts.deny nằm trong thư mục / etc


-1

Do một số lý do bảo mật, bạn có thể yêu cầu chặn một số người dùng SSH truy cập vào hộp Linux.

Chỉnh sửa tệp sshd_config, vị trí đôi khi sẽ khác nhau tùy thuộc vào phân phối Linux, nhưng thường là trong / etc / ssh /.

Mở tệp lên trong khi đăng nhập với quyền root:

# vi /etc/ssh/sshd_config

Chèn một dòng vào cuối tập tin cấu hình: -

DenyUsers username1 username2 username3 username4

Lưu nó và khởi động lại dịch vụ SSH. Về cơ bản username1, username2, username3 & username4 Đăng nhập SSH không được phép.

Chạy lệnh bên dưới để khởi động lại tương tự: -

# systemctl restart sshd

Các yêu cầu đã được thực hiện. Vui lòng lấy ssh từ người dùng đó và bạn sẽ gặp lỗi "Truy cập bị từ chối"


1
Câu hỏi là về việc vô hiệu hóa đăng nhập mật khẩu (nhưng vẫn giữ đăng nhập với xác thực khóa).
Gerald Schneider
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.