Làm cách nào để buộc SSH chỉ cho phép người dùng có khóa đăng nhập?


73

Tôi đã thử làm theo các hướng dẫn ở đây: http://lani78.wordpress.com/2008/08/08/generate-a-ssh-key-and-disable-password-authentication-on-ub Ubuntu-server /

chỉ cho phép người dùng có khóa công khai trên máy chủ xác thực, nhưng tôi không thể lấy SSH để không cho phép đăng nhập chỉ bằng tên người dùng / mật khẩu.

Đây là tập tin sshd_config của tôi - tôi có thiếu gì không? Tôi đã thử khởi động lại SSH và máy tính.

# Package generated configuration file
# See the sshd_config(5) manpage for details


# What ports, IPs and protocols we listen for
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes


# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 768


# Logging
SyslogFacility AUTH
LogLevel INFO


# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes


RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile        %h/.ssh/authorized_keys


# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes


# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no


# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no


# Change to no to disable tunnelled clear text passwords
#PasswordAuthentication no


# Kerberos options
#KerberosAuthentication no
#KerberosGetAFSToken no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes


# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes


X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no


#MaxStartups 10:30:60
#Banner /etc/issue.net


# Allow client to pass locale environment variables
AcceptEnv LANG LC_*


Subsystem sftp /usr/lib/openssh/sftp-server


# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM no

1
FYI: Thật ra việc khởi động lại sshd là không thực sự cần thiết. Lệnh /etc/inid.d/ssh tải lại là đủ.
Oliv

Đừng quên bỏ ghi chú #AuthorizedKeysFile và sao chép khóa chung vào ~ / .ssh / ủy quyền_key (và khởi động lại). Không có cái này, nó sẽ không hoạt động.
ivanleoncz

Nếu điều đó không đúng trong năm 2016, thì chắc chắn là vào năm 2019, cần phải khởi động lại; tải lại là không đủ.
KDN

Câu trả lời:


98

Theo mặc định PasswordAuthenticationđược đặt thành , ngay cả khi bạn nhận xét /etc/ssh/sshd_config.

Bạn sẽ cần phải thiết lập rõ ràng PasswordAuthentication nođể chỉ cho phép Xác thực khóa công khai.

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no

LƯU Ý (người đàn ông sshd_config): PasswordAuthentication chỉ định xem có cho phép xác thực mật khẩu hay không. Mặc định là có.

Và khởi động lại sshd service ssh restart(di chuyển trước systemd) hoặc systemctl restart sshd.service.


6
Ngoài ra chúng ta nên cóUsePAM no
Konstantinos

@pidosaurus tại sao? Nó tốt cho cái gì?
jan-glx

1
@YAK Tôi thích giữ mọi thứ đơn giản và tôi không thích sử dụng PAM. Nhưng ai đó có thể sử dụng xác thực PAM được cấu hình đúng. Tôi nghĩ rằng liên kết này là khai sáng: arlimus.github.io/articles/usepam
Konstantinos

1
Cũng xem xét việc vô hiệu hóa ChallengeResponseAuthentication, xem superuser.com/a/374234/2879 .
cic

13

Theo trang wiki này về các khóa SSH và câu trả lời này , bạn cần thay đổi hai dòng này trong sshd_config:

PasswordAuthentication no
ChallengeResponseAuthentication no

1
Dòng thứ hai về phản ứng thách thức tạo ra sự khác biệt gì?
Ryan Burnette

1
"Nó không cung cấp" bảo mật bổ sung "cho mỗi thuật ngữ" ChallengeResponseAuthentication "chỉ là một từ khóa cấu hình OpenSSH, nó dùng để chỉ phương thức userauth" tương tác với bàn phím "trong giao thức SSH
pzkpfw

4

Trong /etc/ssh/sshd_config, bên dưới cài đặt làm việc cho tôi:

PasswordAuthentication no
UsePAM no

Cuối cùng, khởi động lại sshddaemon.


3

Dòng bạn muốn được nhận xét bất thường theo mặc định trong tệp sshd_config.

# Change to no to disable tunnelled clear text passwords
--->#PasswordAuthentication yes

Để tắt mật khẩu, thay đổi yesthành noxóa nhận xét :

# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no

1

từ https://www.ssh.com/ssh/copy-id#sec-How-ssh-copy-id-works : Nói chung, thư mục chính của người dùng hoặc bất kỳ tệp hoặc thư mục nào chứa tệp khóa không được ghi bởi bất kỳ ai khác . Nếu không, người khác có thể thêm khóa ủy quyền mới cho người dùng và có quyền truy cập. Không ai có thể đọc được các tệp khóa riêng tư.

Hãy thử với sudo chmod go-rwx /home/username/thay thế cho usernamephù hợp.

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.