Cho phép root để đăng nhập thông qua ssh chỉ với xác thực dựa trên khóa


49

Tôi có một số nghi ngờ về cấu hình máy chủ ssh nhất định trên /etc/ssh/sshd_config. Tôi muốn hành vi tiếp theo:

  1. Xác thực khóa công khai là cách duy nhất để xác thực bằng root (không xác thực mật khẩu hoặc khác)
  2. Người dùng bình thường có thể sử dụng cả hai (xác thực mật khẩu và khóa công khai)

Nếu tôi đặt PasswordAuthentication nođiểm đầu tiên của tôi là hài lòng nhưng không phải là điểm thứ hai. Có cách nào PasswordAuthentication nochỉ thiết lập cho root?

Câu trả lời:


78

Bạn có thể làm điều này bằng cách sử dụng PermitRootLoginchỉ thị. Từ sshd_configtrang hướng dẫn:

Chỉ định xem root có thể đăng nhập bằng ssh (1) hay không. Đối số phải là vâng, có ngay, mật khẩu mà không có mật khẩu Mặc định là có có.

Nếu tùy chọn này được đặt thành mật khẩu mà không có mật khẩu, thì xác thực mật khẩu sẽ bị tắt đối với root.

Sau đây sẽ thực hiện những gì bạn muốn:

PasswordAuthentication yes
PermitRootLogin without-password

1
Tôi đã thử điều này trên Debian và xác minh bằng service ssh restartmáy chủ và sau đó trên máy khách tôi đã thử kết nối mà không có khóa của mình ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no root@hostvà thực sự không thể đăng nhập bằng mật khẩu nhưng có thể bằng khóa cho người dùng root.
bastian

Vâng, nhưng nếu bạn chỉ làm điều này thay vào đó, thì bạn có thể đăng nhập bằng mật khẩu: ssh -o PreferredAuthentications=password root@hostkhông đặc biệt an toàn
imho

2
Năm 2019 là "PermitRootLogin cấm mật khẩu", mật khẩu cũ không có mật khẩu là bí danh không dùng nữa.
vbraun

10

Bạn có thể sử dụng Matchcác khối để định cấu hình một số tùy chọn cho mỗi người dùng hoặc nhóm xác thực hoặc mỗi địa chỉ IP hoặc tên máy chủ của nguồn gốc của kết nối.

PasswordAuthentication yes
PermitRootLogin yes

Match User root
PasswordAuthentication no

3
Tôi quản lý để khóa tôi từ máy chủ ssh của tôi làm điều này.
Richard Metzler

Đây có vẻ là phương pháp tốt nhất nếu bạn không bao giờ muốn dấu nhắc mật khẩu xuất hiện cho root.
Leo

Điều này cũng đã khóa tôi ra. Tôi nghĩ rằng nó có thể sai thứ tự ...
Gary

3

Tôi có một cách tiếp cận thậm chí còn hạn chế hơn để cấp quyền root trên máy chủ của mình, điều này có thể thú vị cho những người hoang tưởng như tôi. Hãy cẩn thận những gì bạn làm và theo thứ tự, nếu không bạn có thể kết thúc với một hệ thống mà bạn không thể truy cập root.

  • Tạo một nhóm cụ thể sugroup, các thành viên sẽ được phép trở thành root và chỉ cho phép xác thực khóa cho nhóm này bằng cách đặt các dòng sau vào cuối sshd_confid:

Match Group sugroup

PasswordAuthentication no

  • Đặt lệnh auth required pam_wheel.so group=sugroupvào /etc/pam.d/su. Nó có thể đã ở đó và bạn chỉ cần bỏ qua nó. Điều này từ chối quyền truy cập root cho tất cả người dùng không phải là thành viên của sugroup
  • Chọn một mật khẩu root mạnh :)
  • Kiểm tra xem phương thức xác thực mới của bạn có hoạt động không và chỉ khi:
  • Từ chối đăng nhập root trực tiếp qua ssh bằng cách sử dụng PermitRootLogin notrong /etc/ssh/sshd_config.

Sử dụng cấu hình này, cần phải sử dụng xác thực khóa và mật khẩu để trở thành root. Tôi đã cấu hình máy chủ của mình như thế này, vì tôi thích không có quyền truy cập root trực tiếp qua ssh, bất kể phương thức xác thực.

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.