ssh-copy-id không hoạt động


19

Tôi đang cố gắng thiết lập thông tin đăng nhập SSH không mật khẩu trên CentOS 5.4:

  1. Tôi đã tạo khóa công khai RSA trên máy khách.
  2. ssh-copy-id từ máy khách đến máy chủ.
  3. Đã xác minh ~ / .ssh / ủy quyền_key chứa khóa máy khách.

Khách hàng vẫn nhắc mật khẩu. Tôi đã bỏ lở những gì?

Cảm ơn.

EDIT: đã kiểm tra ssh_config và quyền như được tư vấn. Đây là thông tin gỡ lỗi từ máy khách:

debug2: key: /home/saguna/.ssh/identity ((nil))
debug2: key: /home/saguna/.ssh/id_rsa (0x2b31921be9a0)
debug2: key: /home/saguna/.ssh/id_dsa ((nil))
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-with-mic,password
debug3: preferred gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup gssapi-with-mic
debug3: remaining preferred: publickey,keyboard-interactive,password
debug3: authmethod_is_enabled gssapi-with-mic
debug1: Next authentication method: gssapi-with-mic
debug3: Trying to reverse map address 192.168.1.75.
debug1: Unspecified GSS failure.  Minor code may provide more information
Unknown code krb5 195

debug1: Unspecified GSS failure.  Minor code may provide more information
Unknown code krb5 195

debug1: Unspecified GSS failure.  Minor code may provide more information
Unknown code krb5 195

debug2: we did not send a packet, disable method
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/saguna/.ssh/identity
debug3: no such identity: /home/saguna/.ssh/identity
debug1: Offering public key: /home/saguna/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug1: Trying private key: /home/saguna/.ssh/id_dsa
debug3: no such identity: /home/saguna/.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
saguna@192.168.1.75's password: 

Tôi cũng nhận được điều này :(
Matt Joiner 18/03

Câu trả lời:


19

9/10 lần vì ~ / .ssh / ủy quyền_key không ở chế độ phù hợp.

chmod 600 ~/.ssh/authorized_keys

2
FYI, tôi đã tạo một tập lệnh nhỏ tại github.com/centic9/generate-and-send-ssh-key để chạy các bước cần thiết trong một lần và đảm bảo tất cả các quyền của tệp / thư mục luôn khiến tôi đau đầu ...
centic

5
Nếu điều này không hiệu quả với ai đó, bạn cũng nên xem câu trả lời của @ Gilles. Đặc biệt, nhà và~/.ssh thư mục không thể được ghi bởi bất kỳ ai khác ngoài người dùng.
Ostrokach

Tôi biết điều này đã cũ, nhưng cảm ơn một triệu đến @centic. Tôi chắc chắn rằng các quyền của tôi là chính xác nhưng không bao giờ bận tâm kiểm tra các thư mục $ HOME và .ssh /.
jdferreira

Đã làm cho tôi. Cảm ơn!
Ivan Kovtun

12

Kiểm tra / etc / ssh / sshd_config để cho phép xác thực bằng khóa. Bạn nên có một cái gì đó như thế này trong đó và đảm bảo rằng các dòng không được bình luận:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys

PS: đừng quên khởi động lại sshd sau khi bạn sửa đổi tệp (/etc/init.d/sshd restart)


Ngoài câu trả lời của Patkos Csaba, hãy kiểm tra các quyền của thư mục ~ / .ssh cục bộ và từ xa của bạn.

Trong trường hợp của tôi, AuthorizedKeysFileđã được nhận xét và tôi cũng phải sử dụng một đường dẫn tuyệt đối authorized_keys.
Andrew

Tôi nhận được 'Không thể mở kết nối đến đại lý xác thực của bạn.' khi thử ssh-add
Manticore

đây phải là câu trả lời được chọn
Francisco Tapia

Có thể bạn không hiểu ý kiến. Các dòng nhận xét cho bạn thấy các giá trị mặc định. Bạn không cần bỏ ghi chú chúng nếu bạn muốn giá trị mặc định. Bạn chỉ cần bỏ ghi chú thuộc tính nếu bạn muốn ghi đè giá trị mặc định.
chiếu sáng

5

Tôi thấy rằng với hệ thống của mình, vấn đề là thư mục người dùng (/ home / tên người dùng) đã được trang bị bộ quyền sai. Đó là drwxr-x-w-và nó cần phải có drwxr-xr-x(chỉ có quyền viết cho chủ sở hữu). Giải pháp là sử dụng chmod:

sudo chmod 0755 /home/username

1
Yah! Đã làm cho tôi. ssh đã cho tôi một dấu nhắc mật khẩu vì tôi đã làm hỏng các bản thuyết phục.
chiếu sáng

4

Tôi không phải là một chuyên gia ở đây nhưng cũng gặp phải vấn đề như vậy, đây là hai xu của tôi ngoài tất cả các đề xuất khác.

Đôi khi, ssh-copy-idsao chép khóa sai vào máy chủ từ xa (có thể xảy ra nếu bạn có một số khóa và / hoặc đang sử dụng tên không mặc định cho các tệp chính) hoặc tác nhân xác thực của bạn bị định cấu hình sai.

Đây là một trích dẫn từ các trang người đàn ông :

Nếu tùy chọn -i được cung cấp thì tệp nhận dạng (mặc định là ~ / .ssh / id_rsa.pub) được sử dụng, bất kể có bất kỳ khóa nào trong tác nhân ssh của bạn hay không. Mặt khác, nếu điều này: ssh-add -L cung cấp bất kỳ đầu ra nào, nó sẽ sử dụng tùy chọn đó cho tệp nhận dạng.

Vì vậy, về cơ bản bạn muốn kiểm tra xem:

  • Tác nhân xác thực hệ thống của bạn (thường là ssh-agent) nhìn thấy các khóa mà bạn định sử dụng (kiểm tra ssh-add -Lđầu ra)
    • Nếu bạn không thấy khóa mong muốn, hãy thêm nó bằng ssh-add
  • Các ssh-copy-idsao chép cùng một khóa để các máy tính từ xa (chỉ cần đăng nhập vào máy chủ từ xa sử dụng mật khẩu và kiểm tra các nội dung của ~/.ssh/authorized_keys)
    • Nếu bạn không thấy khóa mong muốn trên máy chủ từ xa, bạn có thể ngầm định nói ssh-copy-idkhóa nào cần sao chép:ssh-copy-id -i ~/.ssh/some_public_key

Mong rằng sẽ giúp.


1
Bạn đóng đinh nó! Tìm hiểu vấn đề của tôi ssh-copy-id là : DEFAULT_PUB_ID_FILE=$(ls -t ${HOME}/.ssh/id*.pub 2>/dev/null | grep -v -- '-cert.pub$' | head -n 1), sẽ mặc định là khóa đầu tiên theo thứ tự chữ cái - trong trường hợp của tôi, tôi đã có một id_boot2docker.pub(rõ ràng là tên mặc định cho công cụ ssh boot2docker). Có vẻ như có một loạt các triển khai ssh-copy-id khác nhau xung quanh; Của tôi đến từ brew install ssh-copy-id, mà lần lượt được lấy từ openssh-Portable. Trang người đàn ông của tôi đề cập rõ ràng về hành vi này ...
Christian Ulbrich

3

Vấn đề phổ biến nhất là quyền không hợp lệ ở phía máy chủ. Kiểm tra xem không có thư mục nhà của bạn, ~/.ssh~/.ssh/authorized_keyscó thể ghi được bởi bất kỳ ai trừ bạn (đặc biệt là chúng không được ghi theo nhóm).

Nếu đó không phải là vấn đề, hãy chạy ssh -vvv servervà nhìn vào quan điểm của khách hàng về cuộc trò chuyện. Cụ thể, kiểm tra xem máy khách đang thử khóa với máy chủ.


Cảm ơn bạn!!! Tôi không hiểu tại sao, nhưng thư mục chính của bạn , ~/.ssh~/.ssh/authorized_keyskhông thể ghi được bởi bất cứ ai nhưng bạn.
Ostrokach

2

Ngoài tất cả những điều trên, người ta luôn có thể kiểm tra tệp nhật ký sshd:

/var/log/auth.log

1

Tôi đã thử các bản sửa lỗi khác nhưng thấy rằng tôi phải thay đổi thư mục chính để không bị người khác ghi. Thư mục nhà là 777. Tôi đã đổi nó thành 755 và nó hoạt động.


1
Chào mừng bạn @dulcana, anh ấy cố gắng thiết lập đăng nhập ssh passwrodless, làm thế nào thay đổi hoán vị thành 755 có thể giúp giải quyết vấn đề?
Francisco Tapia

@FranciscoTapia đó là vì sshd đảm bảo rằng những người dùng khác không thể tạo độc hại tệp ủy quyền, từ chối đăng nhập bằng khóa ssh trong đó nhóm hoặc người khác có thể viết tệp hoặc bất kỳ cha mẹ nào của họ. Các câu trả lời khác cũng đã đề cập đến điều này.
Ángel

0

trong trường hợp của tôi / etc / ssh / sshd_config chứa tham số sau:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys2

Nhưng ssh-copy-id đã tạo một tệp có tên ủy quyền, vì vậy tôi phải sửa đổi mục nhập thành tên mới. Thông tin thêm về deprecated ủy quyền_keys2


0

Để bổ sung cho câu trả lời của Omer Dagan cho CentOS 7 mới hơn, hãy sử dụng:

journalctl -f -u sshd

để xem nhật ký sshd tại máy chủ.


-1

Vấn đề là tôi đã bị lỗi RSAAuthentication trong / etc / ssh / ssh_config

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.