Khóa công khai SSH sẽ không gửi đến máy chủ


33

Tôi đã vật lộn với điều này trong một vài giờ vì vậy mọi sự giúp đỡ đều được đánh giá cao ...

Tôi có 2 máy chủ cả hai có thể sshvới các khóa công khai từ OSX, không có vấn đề gì cả nên tôi chắc chắn mọi thứ đều tốt sshd_config.

Tôi đang cố gắng định cấu hình công việc định kỳ rsyncđể đồng bộ hóa hai máy chủ và cần máy chủ B (sao lưu) sshvào máy chủ A bằng khóa chung.

Tôi không thể tìm ra lý do tại sao nó không tìm thấy khóa công khai của mình - chúng nằm trong ~/.ssh/(ví dụ. /root/.ssh) Và tất cả các quyền của tệp đều đúng trên A & B.

Đây là đầu ra:

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: /root/.ssh/identity
debug3: no such identity: /root/.ssh/identity
debug1: Trying private key: /root/.ssh/id_rsa
debug3: no such identity: /root/.ssh/id_rsa
debug1: Trying private key: /root/.ssh/id_dsa
debug3: no such identity: /root/.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

Cũng lưu ý rằng nó đang tìm kiếm các khóa riêng không tồn tại ...

drwx------. 2 root root 4096 May 25 10:15 .
dr-xr-x---. 4 root root 4096 May 24 18:52 ..
-rw-------. 1 root root  403 May 25 01:37 authorized_keys
-rw-------. 1 root root    0 May 25 01:41 config
-rw-------. 1 root root 1675 May 25 02:35 id_rsa_tm1
-rw-------. 1 root root  405 May 25 02:35 id_rsa_tm1.pub
-rw-------. 1 root root  395 May 25 02:36 known_hosts

2
vui lòng cho chúng tôi đầu ra củals -la /root/.ssh/
mreithub

@mreithub Cảm ơn bạn đã trả lời nhanh chóng - đã thêm ở trên.
Daniel

3
hãy thử xóa _tm1tên tệp chính của bạn (tức là mv id_rsa_tm1 id_rsamv id_rsa_tm1.pub id_rsa.pub)
mreithub

@mreithub Điều đó đã làm việc! Cảm ơn bạn rất nhiều, tuy nhiên tôi không hiểu tại sao tôi không thể nối các chuỗi khác vào tên tệp. Tôi làm như vậy trên iMac của mình để kết nối với các máy chủ mà không gặp sự cố nào ... tức là tôi có thể sử dụng id_rsa.tm1.imac.pub mà không gặp sự cố nào. Nếu tôi muốn nhiều khóa thì sao?
Daniel

Câu trả lời:


22

Hãy xem trang ssh man của bạn:

   -i identity_file
          Selects a file from which the identity (private key) for public
          key authentication is read.  The default is ~/.ssh/identity for
          protocol   version   1,   and  ~/.ssh/id_dsa,  ~/.ssh/id_ecdsa,
          ~/.ssh/id_ed25519 and ~/.ssh/id_rsa  for  protocol  version  2.
          Identity files may also be specified on a per-host basis in the
          configuration file.  It is possible to have multiple -i options
          (and  multiple  identities  specified  in configuration files).

hoặc trang người đàn ông ssh_config:

   IdentityFile
          Specifies a file from which the user's DSA, ECDSA,  ED25519  or
          RSA   authentication   identity   is   read.   The  default  is
          ~/.ssh/identity for  protocol  version  1,  and  ~/.ssh/id_dsa,
          ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519 and ~/.ssh/id_rsa for proto‐
          col version 2.  Additionally, any identities represented by the
          authentication  agent  will  be  used for authentication unless
          IdentitiesOnly is set.

Bạn thấy đấy, có một vài tên tệp đặc biệt được thử nếu bạn không chỉ định khóa. Đó cũng là những tập tin bạn nhìn thấy trong đầu ra nhật ký của bạn.

Để sử dụng khóa trong một tệp có tên khác nhau, bạn có ba tùy chọn:

  • xác định rõ ràng các tập tin bằng cách sử dụng -itùy chọn trên .
  • cấu hình tập tin trong cấu hình máy khách của bạn bằng cách sử dụng IdentityFiletùy chọn trên .
  • thêm chìa khóa cho đại lý của bạn bằng cách sử dụng ssh-add.

Đối với các phiên tương tác, đại lý là một trong những linh hoạt nhất. Đối với công việc định kỳ của bạn, -itùy chọn có lẽ là dễ nhất.


26

Tệp ủy quyền không đúng định dạng trên máy chủ đích là một lý do khác khiến ssh xuất ra thông báo "chúng tôi không gửi gói" và yêu cầu nhập mật khẩu thay vì sử dụng pubkey auth: -

debug1: Next authentication method: publickey
debug1: Offering RSA public key: ~/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug2: we did not send a packet, disable method

Vấn đề trong trường hợp cụ thể này là dữ liệu khóa công khai, được dán vào .ssh/authorized_keysmáy chủ đích, bị thiếu ký tự đầu tiên: -

sh-rsa AAAA...

Giải pháp đơn giản là thêm "s" còn thiếu.

ssh-rsa AAAA...

Và như vậy:-

debug1: Next authentication method: publickey
debug1: Offering RSA public key: ~/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 279
...
debug1: Authentication succeeded (publickey).

2
cảm ơn bạn, mỗi khi tôi gặp lỗi này là do tệp ủy quyền của tôi trên máy chủ từ xa (máy chủ) không đúng định dạng. Tôi ước rằng lỗi không làm cho nó có vẻ như có vấn đề với khách hàng.
tamale

3
Dán vào vim mà không cần nhấn 'i' trước!
Jordan Davidson

Đối với tôi nó không có vẻ không đúng nhưng tôi đã xóa tệp và từ máy nguồn tôi đã thực hiện lại ssh-copy-id để tạo lại nó. Vấn đề được giải quyết.
alvarez

14

Chuỗi thông báo lỗi chính xác này trong câu hỏi cũng có thể xảy ra trong trường hợp cặp khóa riêng / chung bị khớp ở bên cục bộ . Không, điều đó không có ý nghĩa gì cả nhưng tôi đã xé tóc trong một thời gian dài để cố gắng tìm hiểu chuyện gì đang xảy ra.

  • Hệ thống từ xa A đã .ssh/mykey.pubsao chép vào .ssh/authorized_keys.
  • Hệ thống cục bộ B có .ssh/mykeykhóa riêng phù hợp với khóa chung của hệ thống A, nhưng cũng có một .ssh/mykey.pubtệp không khớp, có thể là phiên bản trước của khóa được thay thế.

SSH từ B đến A ( ssh -i mykey A) sẽ thất bại với các tin nhắn trong câu hỏi, đáng chú ý nhất là nếu bạn bật -vvtừ ứng dụng khách ssh bạn sẽ thấy:

Đang thử khóa riêng: .ssh / mykey
chúng tôi không gửi gói, phương thức vô hiệu hóa

Đây là một lời nói dối vì khóa thực tế chưa được thử, rõ ràng nó đã sử dụng tệp khóa công khai cục bộ có tên phù hợp để tìm hiểu xem nó có khả năng hoạt động không và sau đó không thực sự làm gì khi chúng không khớp. Không có lượng thông tin gỡ lỗi ở hai bên thực sự gợi ý về vấn đề này.


Ồ Cái này cũng giết tôi khá nhiều thời gian! Mất một ít tóc! Vì vậy, trong trường hợp của tôi cũng vậy, chỉ có khóa pub của tôi thực sự nằm trong tệp ủy quyền phía máy khách, ngoại trừ nó bao gồm một tên @ host entry ở cuối, trong đó máy chủ sshd của tôi không có. Tôi đã không nhận ra rằng bạn cần phải khớp với ủy quyền ở mỗi đầu, trên thực tế, tôi không nghĩ rằng tôi đã từng khớp chúng trước đây. Đây chỉ là sự cố khi máy khách của tôi là CentOS 7, kết nối với Ubuntu 12.04. Đi từ MacOS hoặc các hệ thống Ubuntu khác hoạt động tốt.
gregthegeek

Vậy làm thế nào để bạn khắc phục vấn đề này? Bạn đã mô tả vấn đề của mình cho một vấn đề của tôi. Vấn đề của tôi ngày càng trầm trọng hơn bởi vì tôi đang nhảy vọt giữa một số hệ thống. Trên thực tế, việc chỉ định tệp không hoạt động với tôi
Madivad

@Madivad Bạn khắc phục sự cố bằng cách khớp các khóa công khai / riêng tư cục bộ (hoặc hoàn toàn không có khóa chung).
Caleb

@Caleb Nghe có vẻ đơn giản hơn trừ khi (và tôi nghĩ rằng đồng xu đã giảm) điều này có nghĩa là tôi nên sao chép cả khóa công khai và khóa riêng cho mỗi hệ thống mà tôi muốn sử dụng làm máy khách SSH? Tôi đã thử tạo một IdentityFile, nhưng rõ ràng là tôi đã sử dụng sai
Madivad

Việc xóa tệp id_rsa.pub mồ côi trên máy khách đã giải quyết vấn đề này cho tôi. Tôi vừa gặp vấn đề này một lần nữa trên máy khách Centos 7 mới kết nối với máy chủ Ubuntu 12.04. ủy quyền tên @ vấn đề máy chủ đã không sửa nó. Tôi đã khớp các thư mục, perms, chính xác cùng một tệp khóa id_rsa, nhưng có thêm id_rsa.pub (ở phía máy khách). Đã gỡ bỏ, bây giờ nó hoạt động. Tôi đã chạy ssh-keygen để tạo thư mục nhanh chóng, sau đó rsync từ hệ thống tốt đã biết. Nhưng điều đó đã để lại một tệp pub bổ sung không khớp với bất kỳ khóa riêng nào (nó không có trên rsync nguồn). Tôi đã thêm lại tập tin pub chưa từng có để xác minh. Đảm bảo khớp hoặc loại bỏ.
gregthegeek

5

Tên tập tin mặc định ssh đang tìm là id_rsaid_rsa.pub.

Nếu bạn muốn sử dụng tên tệp khác, bạn phải chỉ định chúng trong ssh_config(sử dụng IdentityFilecài đặt) hoặc thông qua tham số dòng lệnh ssh -i.


4

Tôi đã có cùng một vấn đề trên RedHat; kiểm tra nhật ký và thấy rằng thư mục nhà có quyền người dùng không chính xác.

sshd[2507]: Authentication refused: bad ownership or modes for directory /home/user

Sửa quyền dir nhà đã giải quyết điều này.


4
Chào mừng bạn đến với trang web Stack của U + L. Bạn có thể làm cho câu trả lời của mình hữu ích hơn cho người khác bằng cách cung cấp một ví dụ về các quyền chính xác sẽ như thế nào.
Erathiel

Tôi đã có một vấn đề rất giống ngoại trừ với ~/.sshdir. Ít nhất là trên Fedora 28 khi ~/.sshquyền là 0775, tôi không thể kết nối với khóa chung / khóa riêng. Vì vậy, tôi đã thay đổi quyền thành 0755 và hoạt động như một cơ duyên :)
PovilasB

3

Một cách đơn giản để gỡ lỗi trong Debian / Ubuntu là: Kết nối với mật khẩu và theo dõi nhật ký

đuôi -f /var/log/auth.log

Hãy thử kết nối từ một thiết bị đầu cuối khác và bạn sẽ thấy lỗi ...

Trong trường hợp của tôi, thư mục / root là 770 chứ không phải 700 là mặc định Lỗi là "Xác thực bị từ chối: quyền sở hữu hoặc chế độ xấu cho thư mục / root"

Khắc phục điều này và bạn đã hoàn tất.


Thx bạn rất nhiều, người đàn ông! bạn đã cứu ngày của tôi
Anthony

Điều đó đã giúp làm rõ nó. Tôi đã nói Người dùng như vậy từ 123.123.123.123 không được phép vì không được liệt kê trong Cho phép người dùng . Cảm ơn bạn rất nhiều!
aexl


0

Sau khi chạy

ssh-copy-id user@remote-host

bình thường nó sẽ làm việc Nhưng nếu thất bại, hãy thử điều này: đăng nhập vào máy chủ từ xa với tư cách là người dùng bạn muốn đăng nhập trong tương lai và chạy:

ssh-keygen

Nó đã giúp đỡ tôi.


0

Vì vậy, điều xảy ra với tôi là tôi có 2 máy ảo để truy cập từ máy cục bộ của mình (2 khóa id_rsa.pub và id_rsa2.pub). Tôi nhận ra rằng kết nối ssh của tôi đang sử dụng id_rsa.pub theo mặc định cho mọi kết nối ssh user@xx.xx.xx.xx. Tôi đã giải quyết vấn đề của mình bằng cách thêm tệp cấu hình và chỉ định danh tính sẽ được sử dụng cho mọi máy chủ như sau:

vi ~/.ssh/config

Add both hostnames and their identity file as follows:

Host server1.nixcraft.com
  IdentityFile ~/Users/.ssh/id_rsa1
Host server2.nixcraft.com
  IdentityFile /backup/home/aymen/.ssh/id_rsa2

-2

khách hàng

vim /etc/ssh/ssh_config

#add your key 
IdentityFile ~/.ssh/yourkey

service sshd restart
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.