SSH vẫn yêu cầu mật khẩu sau khi thiết lập xác thực dựa trên khóa


10

Tôi đã tạo thành công một khóa dựa trên auth cho người dùng root từ máy A đến máy B của tôi.

Bây giờ, tôi đã tạo một người dùng mới trên máy B, giống như trên máy A, hãy gọi anh ta USER. Tôi đã tạo một thư mục nhà cho anh ta trên máy B /home/USERvà tôi muốn tạo khóa dựa trên auth cho anh ta từ máy A đến máy B.

Vì vậy, tôi đã chạy trên máy A

  1. ssh-keygen -t rsa, chấp nhận tất cả các đường dẫn, vì vậy /home/USER/.ssh/id_rsavà không có cụm từ
  2. ssh-copy-id -i /home/USER/.ssh/id_rsa.pub USER@BmachinesIP, nhập mật khẩu và nhận massage

Bây giờ hãy thử đăng nhập vào máy bla bla bla

Vì vậy, mọi thứ dường như là OK.

Nhưng khi tôi cố gắng kết nối, ssh USER@BmachinesIPtôi đã yêu cầu nhập mật khẩu. Tôi đã cố gắng để xem nhật ký và chạy ssh -vvv USER@BmachinesIPvà đây là một phần của đầu ra:

debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /home/USER/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/USER/.ssh/id_dsa
debug3: no such identity: /home/USER/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
USER@BmachinesIP's password:

Vì vậy, bất cứ ai có thể cho tôi biết những gì tôi đã làm sai hoặc những gì tôi nên thay đổi? Có lẽ vấn đề nằm ở quyền, đây là:

trên máy A:

drwx------  2 USER USER    SIZE DATE TIME .ssh
-rw-------  1 USER USER 1675 2011-10-31 14:36 id_rsa
-rw-r--r--  1 USER USER 413 2011-10-31 14:36 id_rsa.pub

và trên máy B:

drwx------  2 USER defaultGroup    SIZE DATE TIME .ssh
-rw-------    1 USER defaultGroup    SIZE DATE TIME authorized_keys

Câu trả lời:


13

Tôi đã tìm thấy một giải pháp. Có một vấn đề trong quyền.

/home/USER trên máy từ xa đã được cấp tất cả các quyền, nhưng đối với auth dựa trên khóa, nó phải được đặt thành 755


2
Ồ Thật ngạc nhiên khi không có đầu ra gỡ lỗi nào về các quyền mặc dù chúng là trung tâm của cấu hình khóa công khai thích hợp.
jchook

Wow, bạn đúng. Bây giờ nó đang hoạt động .... mặc dù tôi thực sự muốn giữ quyền ban đầu (775). Bất kỳ manh mối về làm thế nào để thay đổi điều đó?
Pablo Olmos de Aguilera C.

Có vẻ như không có cách nào, chỉ có cách giải quyết mới được đặt StrictModes no trong sshd_config. : /.
Pablo Olmos de Aguilera C.

2
Về cơ bản bạn cần các quyền này : chmod o-w ~/; chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys, sau đó nó hoạt động. Sao chép từ câu trả lời của Maxime R. từ đây: askubfox.com/questions/54670/passwordless-ssh-not- Work
erik

2
Tôi đã thực hiện tất cả các thay đổi quyền này và nó vẫn hỏi tôi mật khẩu khi tôi ssh. Tôi cũng đã xác minh rằng khóa riêng giống nhau trên cả hai máy (Ubuntu). Khá hoang mang.
Amalgovinus

2

Vấn đề tương tự đối với tôi cài đặt CentOS7 mới.

1. kiểm tra quyền truy cập thư mục nhàquyền ~ / .ssh và ~ / .ssh / ủy quyền (theo @erik)

chmod o-w ~/; chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys

2. kiểm tra / etc / ssh / sshd_config cài đặt && dịch vụ sshd khởi động lại (sau mỗi lần chỉnh sửa) Hữu ích: thử "LogLevel VERBOSE" trong sshd_config.

Tôi vẫn nhận được mật khẩu nhắc sau khi kiểm tra tất cả là ok.

Chạy ứng dụng khách ssh với nhật ký -vvv:

debug3: send_pubkey_test 
debug2: we sent a publickey packet, wait for reply

Nhật ký máy chủ (/ var / log / safe):

Failed publickey for * from * port * ssh2: RSA *

Máy chủ ssh không gửi thêm thông tin lỗi cho khách hàng vì đó sẽ là một rủi ro bảo mật.

Nếu tôi chạy sshd trên các cổng khác nhau 'sshd -p 5555 -d'. Chìa khóa làm việc. Mật khẩu đăng nhập ok. WTF?

Sau đó, tôi đã tắt selinux (đặt SELINUX = bị vô hiệu hóa trong / etc / selinux / config) và khởi động lại. Mật khẩu đăng nhập sau đó làm việc ok.

cài đặt sshd_config làm việc hiện tại của tôi :

[root@hp-bl-05 ~]# grep -vE "^#|^$" /etc/ssh/sshd_config  
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
SyslogFacility AUTHPRIV
LogLevel VERBOSE
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys
HostbasedAuthentication yes
PasswordAuthentication yes
ChallengeResponseAuthentication no
GSSAPIAuthentication no
GSSAPICleanupCredentials no
UsePAM yes
X11Forwarding yes
UseDNS no
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
Subsystem   sftp    /usr/libexec/openssh/sftp-server

Vì vậy, thật tuyệt khi biết rằng chúng ta có thể thay đổi một cái gì đó nhỏ trong selinux để đăng nhập ssh không mật khẩu để hoạt động. Bất cứ ai có thể cải thiện câu trả lời?


0

Giải pháp không phải là vô hiệu hóa SELinux mà là để sửa các quyền của SELinux trong thư mục người dùng. Bối cảnh thư mục người dùng phải được đặt thành user_home_t.

Để kiểm tra,

$ sudo ls -Z /home/

Nếu ngữ cảnh cho thư mục người dùng của bạn là bất cứ điều gì hơn user_home_t, thì Selinux sẽ không cho phép SSH thông qua khóa chung vào thư mục người dùng đó cho người dùng đó.

Sửa chữa,

$ sudo semanage fcontext -a -t user_home_t /home/azureuser
$ sudo restorecon -vvRF /home/azureuser

Khóa đăng nhập dựa trên bây giờ sẽ hoạt động.

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.