Đang cố thực hiện xác thực ssh với các tệp chính: máy chủ đã từ chối khóa của chúng tôi


53

Tôi đang cố gắng thiết lập xác thực ssh với các tệp chính thay cho tên người dùng / mật khẩu. Máy khách là một hộp Windows chạy PuTTY và máy chủ là máy chủ Ubuntu 12.04 LTS.

Tôi đã tải xuống puttygen.exe và nó đã tạo ra một cặp khóa. Trong /etc/ssh/sshd_configtôi có dòng này:

AuthorizedKeysFile %h/.ssh/authorized_keys

và trên tệp khóa công khai của khách hàng của tôi, nó ghi điều này:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "my@email.address.com"
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAr3Qo6T5XU06ZigGOd3eKvfBhFLhg5kWv8lz6
qJ2G9XCbexlPQGanPhh+vcPkhor6+7OmB+WSdHeNO652kTofnauTKcTCbHjsT7cJ
GNrO8WVURRh4fabknUHPmauerWQZ6TgRPGaz0aucU+2C+DUo2SKVFDir1vb+4u83
AV1pKxs=my@email.address.com
---- END SSH2 PUBLIC KEY ----

Tôi đã sao chép phần từ "ssh-rsa AAA" sang "my@email.address.com" và đặt phần đó vào tệp ~/.ssh/authorized_keystrên máy chủ của tôi (trong trang chủ của chính tôi). Trong PuTTY trong Kết nối> SSH> Auth, tôi đã nhập đường dẫn đến khóa riêng được tạo trên máy khách của mình và lưu cài đặt phiên.

Tôi đã khởi động lại máy chủ ssh với

sudo service ssh restart

Bây giờ nếu tôi tải hồ sơ bằng PuTTY (tôi đã xác minh khóa riêng vẫn trong Kết nối> SSH> Xác thực và đường dẫn là chính xác) và chạy hồ sơ, nó nói

Server refused our key

Tôi đã thử đặt khóa công khai vào một tệp trong thư mục ./ssh/authorized_keys/ nhưng điều đó không giúp ích gì nên tôi đã sử dụng ./ssh/authorized_keysnhư một tệp , dán khóa trong đó. Tôi cũng đã thử tạo một cặp khóa riêng / chung trên máy chủ, đặt khóa chung vào ./ssh/authorized_filesvà tải khóa riêng trong PuTTY trên máy khách của tôi. Khởi động lại máy chủ cũng không giúp được gì.

Tôi thấy rằng lỗi có thể được khắc phục bằng cách đặt khóa ở một nơi bên ngoài thư mục nhà của người dùng nhưng điều đó chỉ hữu ích nếu thư mục nhà được mã hóa, điều này không được.

Cũng đã thử tạo khóa 4096 bit, nghĩ rằng có lẽ 1024 quá ngắn.

Làm thế nào tôi có thể làm điều này để làm việc? Cảm ơn!

BIÊN TẬP:

Ok, /var/log/auth.lognói:

sshd: Authentication refused: bad ownership or modes for directory /home/vorkbaard/.ssh

Google bảo tôi ~/.ssh/nên là 700 và ~/.ssh/authorized_keysnên là 600, vì vậy tôi đã làm điều đó. Bây giờ /var/log/auth.lognói:

sshd: error: key_read: uudecode AAAAB3N [etc etc etc until about 3/4 of my public key]

Câu trả lời:


95

Ok, nó đã được sửa nhưng tôi không thấy nó khác với những gì tôi đã thử.

Tôi đã làm gì:

  • tạo một cặp khóa với puttygen.exe (chiều dài: 1024 bit)
  • tải khóa riêng trong hồ sơ PuTTY
  • nhập khóa công khai ~/.ssh/authorized_keys vào một dòng (cần bắt đầu bằng ssh-rsa)
  • chmod 700 ~/.ssh
  • chmod 600 ~/.ssh/authorized_keys
  • chown $USER:$USER ~/.ssh -R
  • thay đổi /etc/ssh/sshd_configđể nó chứaAuthorizedKeysFile %h/.ssh/authorized_keys
  • sudo service ssh restart

Để xử lý sự cố làm # tail -f /var/log/auth.log.

Cảm ơn bạn đã giúp đỡ!


1
Hmm, vậy điều gì đã xảy ra với sshd: error: key_read: uudecode AAAAB3Nlỗi đó trong auth.log?
Alaa Ali

Tôi không có manh mối, Alaa. Có lẽ tôi đã mắc lỗi dán chuỗi khóa trước đó. Auth.log hiện không nhận được bất kỳ mục nào nữa và xác thực dựa trên khóa hoạt động hoàn hảo. Vấn đề chính của tôi là tôi đã không thực sự chắc chắn về những gì cần phải làm, làm cho cách mà nhiều khó khăn hơn. Vì vậy, tôi không biết tại sao nhưng nó hoạt động. Cảm ơn một lần nữa vì sự giúp đỡ của bạn :)
Forkbeard

Tuyệt vời!!! Tôi đã gãi đầu được 2 ngày. Câu trả lời này tiết kiệm trong ngày !!
naka

Bước 3 là mẹo cho tôi. Tôi đã không đặt khóa công khai trong authorized_keystệp mà tôi vừa dán mykey.pubtệp của mình vào ~/.sshthư mục và nghĩ rằng nó sẽ nhận nó. Thay vào đó, điều tôi cần cuối cùng là chạy cái này hoặc chỉnh sửa và dán vào bên dưới các phím khác có thể có trong đó. cat mykey.pub >> authorized_keys. Bây giờ có vẻ đơn giản, nhưng bài học kinh nghiệm là tất cả các khóa công khai phải sống authorized_keyskhông chỉ trong ~/.ssh/thư mục. Ai đó làm ơn khuyên nếu đây không phải là một khẳng định chính xác.
âm sắc

nếu các bước không có ích, hãy kiểm tra thêm: 1. bạn đã sao chép khóa công khai PuTTY đã lưu vào ủy quyền, không phải OpenSSH một 2. nếu bạn đã sao chép bằng cách sử dụng bản sao / dán từ PuTTYgen (bạn nên làm như vậy), bạn có thể đã tách khóa công khai trong nhiều dòng; nó phải là một dòng duy nhất; đảm bảo bạn không thêm dấu cách hàng đầu hoặc dấu trong khi sao chép nhờ vào r_hartman centos.org/forums/viewtopic.php?t=990
mvladk

23

Tôi chỉ gặp phải vấn đề này. Mặc dù có cấu hình được đặt chính xác như đã được đề cập trong luồng này (quyền trên ủy quyền, v.v.), nhưng hóa ra tôi đã có khóa công khai ở định dạng sai. Đó là dưới dạng:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "imported-openssh-key"
AAAAB3NzaC1yc2EAAAADAQABAAABAQDUoj0N3vuLpeviGvZTasGQ...
... lPmTrOfVTxI9wjax2JvKcyE0fiNMzXO7qiHJsQM9G9ZB4Lkf71kT
---- END SSH2 PUBLIC KEY ----

Mà đã không làm việc. Nhưng làm cho nó hoạt động có nó ở dạng:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDU.....j0N3vuLpeviGvZTasGQa1rcJiPXQMW7v3uurb+n94B9MQaaWR0odsg5DJQL92TNenOda5BO1nd08y6+sdLQmHXExTz6X8FzgoVsAkEl3RscxcxHUksiKA9JfTo38vQvG/bPxIHMCuSumCQVA1laf3rO/uOrkcB7iMWhaoi1/z6AbFtPzeh7xjGfInMWwtBI0CsHSRF73VWIxT26w0P+KjafCjSn/7vDO1bT8QHujSQelU/GqaVEvbbvPl1a7POVjKgHLNekolwRKfNeVEewcnmZaoqfHgOKlPmTrOfVTxI9wjax2JvKcyE0fiNMzXO7qiHJsQM9G9ZB4Lkf71kT UserName@HOSTNAME

14
Bạn có thể sử dụng ssh-keygen -i -f filenameofwindowsformpub.keyđể chuyển đổi khóa chung thành định dạng được hiểu bởi máy chủ OpenSSH của bạn.
Đen

Vâng, nó làm việc cho tôi! Nó phải ở trong một dòng duy nhất. Không thể tin được chỉ có thế!
adelriosantiago

1
HI kuraara Tôi nghĩ rằng hướng dẫn trên của @Black nên được làm nổi bật trong câu trả lời.
ekerner

Tôi có thể thêm nhận xét vào định dạng máy chủ OpenSSH không? Đối với con người, thật khó để nói chiếc máy tính này đại diện cho cái gì.
dùng1700890

Khi tôi làm theo đề xuất của @Black, không có Tên người dùng @ HOSTNAME ở cuối chuỗi. Tôi không biết nếu phần đó có vấn đề.
arnoldbird

9

vấn đề là các cửa sổ sử dụng một dòng mới khác với linux, vì vậy khi sao chép khóa từ windows sang linux, có một \ n ở cuối dòng mà bạn không thể thấy trên linux trong trình chỉnh sửa.

Nếu bạn theo đuôi /var/log/auth.log và thử đăng nhập, lỗi sẽ như sau:

sshd: lỗi: key_read: uudecode AAAAB3N [....] == \ n

Nếu bạn thay đổi khóa của mình trên các cửa sổ để nó ở một dòng duy nhất không có dòng mới ở cuối và sao chép nó vào linux, thì nó sẽ hoạt động (đã thực hiện thủ thuật cho tôi).


đây là vấn đề của tôi, nhưng tôi không thấy gì trong auth.log để đề nghị đó là trường hợp. bực bội ...
Anthony

8

Tôi đã phải thay đổi quyền vào thư mục nhà

chmod 700 ~

2
Điều này cũng làm việc cho tôi (trên AIX).
stevepastelan

Làm việc cho tôi trên CentOS cũng vậy
Jaywalker

Làm việc cho tôi trên Redhat! Truy cập viết nhóm dường như là vấn đề cụ thể. Vẫn hoạt động với tôi nếu tôi để quyền đọc nhóm tại chỗ: "chmod 740 ~".
Paul

6

Tôi đã phải thay đổi quyền truy cập thư mục ~ / .ssh từ 770 thành 700 và quyền truy cập tệp ~ / .ssh / ủy quyền từ 660 thành 600.

Đối với một số lý do loại bỏ quyền nhóm đã khắc phục vấn đề này cho tôi.

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

5

Các ~/.ssh/authorized_keystập tin yêu cầu các khóa là tất cả trên một dòng. Nếu bạn đã thêm nó trên nhiều dòng như trong dán của bạn ở trên, hãy thử tham gia các dòng.


Cảm ơn, điều đó có ý nghĩa và bây giờ tôi hiểu tại sao nó là một tập tin, không phải là một thư mục. Tuy nhiên nó không giúp được gì.
Forkbeard

3
Đối với bất kỳ ai có thể bị nhầm lẫn bởi điều này, điều anh ta muốn nói là mỗi khóa phải nằm trên một dòng duy nhất, nhưng các khóa khác nhau cần phải nằm trên các dòng khác nhau.
Anthony

2

Đây là những gì làm việc cho tôi:

Trong puttygen, sau khi bạn đã tạo các khóa của mình, hãy đảm bảo rằng bạn sao chép và dán thông tin từ trường trên cùng để đi vào tệp ủy quyền của bạn. Nếu bạn lưu khóa công khai của mình vào máy khách, rồi mở nó lên, văn bản sẽ khác với văn bản ở trên cùng của puttygenmàn hình. Một lần nữa, hãy đảm bảo rằng bạn sao chép và dán văn bản từ TOP của puttygenmàn hình (sau khi bạn đã tạo khóa) vào tệp ủy quyền của bạn sẽ được đặt trong đó ~/.ssh.


Điều này thực sự đã khắc phục vấn đề. Tôi không hiểu tại sao nếu bạn bấm vào khóa công khai tại sao nó không lưu định dạng đúng.
luky

1

Ngoài tất cả các câu trả lời trên, hãy đảm bảo bạn sao chép và dán khóa puttygenchính xác!

Nếu bạn chỉ cần nhấp đúp vào phần lớn của chuỗi khóa để chọn nó, bạn có thể không nhận được toàn bộ chuỗi, vì hộp văn bản chia dòng trên một số ký tự, như +, bạn không chọn văn bản sau +ký tự ( mà bạn không thể thấy vì hộp văn bản quá nhỏ). Hãy chắc chắn chọn toàn bộ chuỗi theo cách thủ công, từ cuối ssh-rsađến cuối hộp văn bản.


1

Đôi khi nó có thể là một vấn đề liên quan đến việc có khóa chung trên một dòng, cách tiếp cận này dường như để giải quyết nó

echo 'the content of the public key' > /root/.ssh/authorized_keys

1

Đối với tôi, vấn đề là tôi đã được tạo ~/.ssh/authorized_keysbằng root nên sở hữu root. Tôi đã phải chown sshuser:sshuser ~/.ssh/authorized_keyssau đó nó bắt đầu làm việc


1

Tôi cũng đã đối mặt với lỗi này và giải quyết nó bằng cách thay đổi quyền của tệp ủy quyền 600.

chmod 600 ~/.ssh/authorized_keys

1

Lỗi thường gặp là mọi người sử dụng trình soạn thảo văn bản (như Vim) và dán văn bản đã sao chép trước khi kích hoạt "insert" (nhấn + i trong Vim trước khi dán)


0

Trong thực tế, tôi đã thay đổi authorized_keyssự cho phép của mình 644, sau đó vấn đề được giải quyết.

chmod 644 ~/.ssh/authorized_keys

0

để gỡ lỗi mở ssh người ta có thể sử dụng:

sudo `which sshd` -p 2020 -Dd

nó chạy sshd trên cổng khác 2020. Nó chạy sshd như một chương trình hiện tại để đầu ra đi vào màn hình. nếu đóng nó được đóng lại.

sau đó cố gắng kết nối.

giải trình:

  • `which sshd` - định vị địa chỉ sshd, thử thực thi sshd xem nó in gì. khi sử dụng dấu ngoặc kép, nó sẽ thực thi và trả về kết quả.
  • -p 2020 - chỉ định cổng
  • -D - đăng nhập vào tập tin
  • -d - đăng nhập vào màn hình

https://www.attachmate.com/documentation/rsit-unix-802/rsit-unix-guide/data/sshd_options_ap.htmlm


Bạn có thể mở rộng khi câu trả lời này? Các đối số đòi hỏi gì? Lệnh đang làm gì (đối với người không có kinh nghiệm)?
Zzzach ...

-1

Tôi đã tạo các tệp .ssh và ủy quyền khi đăng nhập với quyền root, điều này đã cấp quyền sai. Nó cũng đặt tất cả các tập tin dưới thư mục gốc.

Thay đổi quyền sở hữu các tệp đó cho người dùng mà bạn mong muốn sẽ không phải là thông lệ tốt, vì vậy tôi đã lưu lại các bước của mình và đảm bảo rằng tôi đã đăng nhập với tư cách là người dùng mà tôi muốn sử dụng SSH cùng và tạo lại .ssh và ủy quyền.

Hướng dẫn kết nối Win7 với máy chủ Xubfox 15.04: Cách tạo Khóa SSH w / Putty để kết nối với VPS

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.