SSH Public Key - Không có phương thức xác thực được hỗ trợ nào (máy chủ đã gửi khóa chung)


80

Tôi có một thiết lập máy chủ 12.10 trong một máy ảo với mạng được đặt thành cầu nối (về cơ bản sẽ được xem như một máy tính được kết nối với bộ chuyển mạch của tôi).

Tôi đã cài đặt opensshd thông qua apt-getvà có thể kết nối với máy chủ bằng cách sử dụng putty với tên người dùng và mật khẩu của tôi.

Sau đó tôi bắt đầu thử sử dụng xác thực khóa chung / riêng. Tôi đã làm như sau:

  1. Tạo các khóa bằng PuttyGen.
  2. Đã chuyển khóa công khai sang /etc/ssh/myusername/authorized_keys(Tôi đang sử dụng các thư mục nhà được mã hóa).
  3. Thiết lập sshd_confignhư vậy:

    PubkeyAuthentication yes
    AuthorizedKeysFile /etc/ssh/%u/authorized_keys
    StrictModes no
    PasswordAuthentication no
    UsePAM yes
    

Khi tôi kết nối bằng putty hoặc WinSCP, tôi gặp lỗi thông báo Không có phương thức xác thực được hỗ trợ nào (máy chủ đã gửi khóa công khai).

Nếu tôi chạy sshdtrong chế độ gỡ lỗi, tôi thấy:

PAM: initializing for "username"
PAM: setting PAM_RHOST to "192.168.1.7"
PAM: setting PAM_TTY to "ssh"
userauth-request for user username service ssh-connection method publickey [preauth]
attempt 1 failures 0 [preauth]
test whether pkalg/pkblob are acceptable [preauth[
Checking blacklist file /usr/share/ssh/blacklist.RSA-1023
Checking blacklist file /etc/ssh/blacklist.RSA-1023
temporarily_use_uid: 1000/1000 (e=0/0)
trying public key file /etc/ssh/username/authorized_keys
fd4 clearing O_NONBLOCK
restore_uid: 0/0
Failed publickey for username from 192.168.1.7 port 14343 ssh2
Received disconnect from 192.168.1.7: 14: No supported authentication methods available [preauth]
do_cleanup [preauth]
monitor_read_log: child log fd closed
do_cleanup
PAM: cleanup

Tại sao điều này xảy ra và làm thế nào tôi có thể khắc phục điều này?


Trong trường hợp của tôi, tôi có hai trường hợp AWS. Một trong số họ đang hoạt động hoàn hảo, một người khác đang làm việc khi kết nối thông qua Intellij Idea, nhưng không phải từ Putty, nhưng nó đã hoạt động ngay từ đầu. Vì vậy, trong trường hợp của tôi, nó phải là một cái gì đó về putty
Marian Klühspies

Câu trả lời:


70

Vấn đề được giải quyết:

Có vẻ như đã xảy ra sự cố với tệp khóa công khai của tôi. PuttyGen sẽ tạo một tệp khóa công khai trông giống như:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20121022"
AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwu
a6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOH
tr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/u
vObrJe8=
---- END SSH2 PUBLIC KEY ----

Tuy nhiên, điều này sẽ không hoạt động, vì vậy, những gì bạn cần làm là mở khóa trong PuttyGen, sau đó sao chép nó từ đó (điều này dẫn đến khóa có định dạng đúng và trong 1 dòng):

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwua6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOHtr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/uvObrJe8= rsa-key-20121022

Dán cái này vào authorized_keysrồi nó sẽ hoạt động.


1
Tôi đã mở authorized_keystrong vi và loại bỏ tất cả các ngắt dòng và nó hoạt động.
Lu-ca

1
tập tin khóa công khai nằm ở đâu? tôi chỉ sử dụng putty.
Syler

1
Tôi đã làm tất cả những điều trên nhưng máy chủ vẫn đang gửi Không có phương thức xác thực được hỗ trợ nào (máy chủ đã gửi khóa công khai)
Al-Alamin

Làm thế nào bạn biết điều này sẽ không hoạt động / bạn đã tìm thấy định dạng mong đợi ở đâu?
Michael

Nơi tôi cần dán chính xác khi bạn nói "Dán cái này vào ủy quyền_key thì nó sẽ hoạt động." @ F21
Mahender Reddy Yasa

20
  1. Chỉnh sửa /etc/ssh/sshd_configtập tin.
  2. Thay đổi PasswordAuthenticationChallengeResponseAuthenticationđể yes.

3a. Khởi động lại ssh /etc/init.d/ssh restart.
HOẶC
3b. bạn sử dụng tốt hơnservice sshd restart


thực sự đây là nhận xét hữu ích nếu bạn gặp sự cố khi kết nối phần mềm vie ftp
cnu

Nó ổn với tôi!
Asinox

8
Toàn bộ mục đích của việc xác thực thông qua tệp chính là để tránh xác thực mật khẩu, vì vậy thực sự bạn nên đặt PasswordAuthenticationthành no.
Pere

Đó là câu trả lời duy nhất đã giúp tôi. Tôi không cần xác thực khóa công khai / riêng tư, nhưng tôi nhận được tin nhắn kỳ lạ đó.
Serge Rogatch

Cảm ơn ChallengeResponseAuthentication, nó đã giải quyết vấn đề với tôi trên Debian 10.0
realtebo

10

Chỉ là một mẹo tôi hy vọng có thể giúp đỡ người khác với những cơn đau đầu mà tôi có. F21 đúng là bạn cần sao chép khóa ra khỏi cửa sổ PuTTYGen thay vì lưu tệp, nhưng sau khi sao chép, cách bạn dán có thể có tác động đáng kể đến việc khóa của bạn có hoạt động hay không. Một số trình soạn thảo sẽ thay đổi văn bản khi bạn dán hoặc làm một cái gì đó với dòng mới hoặc thứ gì đó làm cho tệp ủy quyền_key không hợp lệ.

Những gì tôi đã tìm thấy là ít có khả năng phá vỡ nhất là lặp lại chuỗi đầy đủ và chuyển hướng đầu ra đến tệp. Nhấp chuột phải vào PuTTY để dán chuỗi khóa vào dòng lệnh, nó hoạt động như thế này (với ví dụ đã nêu ở trên):

echo [right-click-to-paste-here] > /etc/ssh/username/authorized_keys

Bạn sẽ kết thúc với điều này:

echo ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwua6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOHtr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/uvObrJe8= rsa-key-20121022 > /etc/ssh/username/authorized_keys

Một ưu điểm khác của phương pháp này là bạn có thể thêm nhiều khóa theo cách này bằng cách sử dụng >> để nối thay vì> ghi đè, ví dụ:

echo ssh-rsa AAAAB3<...snip...>rJe8= rsa-key-20121022 >> /etc/ssh/username

Hy vọng rằng sẽ giúp được ai đó.


Điều này không hoạt động đối với các khóa 4096 bit ... nó vượt quá giới hạn đầu cuối cho các ký tự mà tôi nghĩ
Freedo 18/07/2015

1
Có thể hoặc không nên là một ý tưởng tốt để loại bỏ điều này khỏi lịch sử bash của bạn sau đó.
Jason Powers Murray

@JasonPowersM bồ: đó là khóa công khai. Các hệ thống mật mã hóa khóa công khai được thiết kế để luôn an toàn khi phím được công bố, do đó, nó OK để đăng nhập khóa công khai trong lịch sử bash và các nơi khác.
David Cary

9

Chúng tôi đã sử dụng đúng loại khóa (ppk thay vì pem) ..

Trong trường hợp của chúng tôi, đó là sự cố với quyền truy cập tệp cho ủy quyền trên thư mục người dùng máy chủ. Nó phải là -rw-r - r-- ... Đó là -rw-rw-r--

ssh là rất khó khăn về perms tập tin.


Cảm ơn đã chỉ cho tôi đi đúng hướng. Trong trường hợp của chúng tôi, cả chủ sở hữu và quyền đều sai.
Zsolti

Làm cách nào để thay đổi quyền truy cập tệp vì chúng tôi không thể truy cập qua ssh? có cách nào khác để làm điều đó không?
JIT

1
Của tôi cũng là một vấn đề quyền sở hữu, nhóm, và quyền. Như được hiển thị ở đây ( stackoverflow.com/a/36808935/384670 ), các quyền tôi phải sử dụng là 600 cho tệp và 700 cho thư mục. Tôi cũng đã thay đổi chủ sở hữu và nhóm thành người dùng không root này.
M Katz

5

GIẢI QUYẾT:

  1. Bạn cần tải xuống puttyGEN và tạo khóa chung và khóa riêng.
  2. Tôi đã gán mật khẩu cho khóa riêng của mình.
  3. sau đó cấu hình khóa riêng trong putty. Putty-> SSH-> Auth-> Duyệt đến riêng tư của bạn.
  4. Đảm bảo bạn có cùng đường dẫn cho khóa riêng và khóa chung.
  5. Bạn cần cấu hình khóa công khai trên máy chủ. (Trong trường hợp của tôi, tôi đã nói chuyện với anh chàng máy chủ và hỏi liệu anh ta có thể thêm khóa công khai của tôi vào máy chủ không). Bạn cần khóa công khai ở phía bên kia (máy chủ) kết nối.

2
"Đảm bảo bạn có cùng đường dẫn cho khóa riêng và khóa chung." Điều đó không có gì để làm với nó. Bạn không cần phải lưu khóa công khai bên cạnh khóa riêng của mình ..
user3790897 6/12/17

5

Trong trường hợp của tôi, lý do là tệp khóa riêng (.ppk) đã bị xóa trong tác nhân xác thực Putty, tức là Pageant. Tôi vừa cập nhật lại cho Pagete ở đó và kết nối hoạt động hoàn hảo sau đó.

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.