SSH đột ngột trả lại định dạng không hợp lệ


23

Vì vậy, cách đây một thời gian tôi đã thiết lập một máy chủ trên AWS và sử dụng khóa SSH được tạo của họ. Tôi đã lưu khóa vào Lastpass và đã lấy thành công từ đó trước đó và nó hoạt động. Tuy nhiên, sau khi thử lại ngày hôm nay, tôi không thể làm cho nó hoạt động được.

-rw------- 1 itsgreg users 1674 Jun 6 12:51 key_name

Tôi đã thử ssh -i key_name, ssh-keygen -f key_namenhưng không có gì hoạt động, tôi luôn nhận được thông báo lỗi này:

Load key "key_name": invalid format

Có cách nào để khắc phục điều này?

Câu trả lời:


13

Kiểm tra nội dung của key_name, nếu nhân viên nói invalid format, thì có gì đó không đúng với khóa - như .. bạn có chắc đó là khóa chính xác không? Ngay cả khi đó không phải là khóa riêng mà bạn cần, đại lý ssh sẽ không trả lại invalid formatnếu khóa hoạt động, đơn giản là bạn sẽ không thể kết nối. Bạn có thể đã đặt khóa công khai của bạn ở đó, vì một số lý do. Kiểm tra nó!


5
Chắc chắn kiểm tra. Bắt đầu với ----BEGIN RSA PRIVATE KEY-----và kết thúc với -----END RSA PRIVATE KEY-----. Thêm vào đó nó được sử dụng để làm việc.
Gregor Menih

1
Một điều rất khó xảy ra, nhưng vẫn có thể xảy ra là tập tin bị hỏng. Tạo một cái mới và điền lại nội dung từ Lastpass.
13dimitar

2
Wow, điều đó thực sự có ích! Sau khi tạo khóa mới, tôi nhận thấy rằng khóa mới có 64 ký tự trên mỗi dòng trong khi khóa cũ của tôi có 76. Tôi đã định dạng lại khóa cũ của mình để chỉ có 64 ký tự trên mỗi dòng, sau đó nó bắt đầu hoạt động! Tôi cũng đã thiếu một dấu gạch ngang từ dòng đầu tiên.
Gregor Menih

2
"Tôi cũng đã thiếu một dấu gạch ngang từ dòng đầu tiên." Như trên. Cảm ơn bạn @ItsGreg vì điều đó. Tôi nhớ ký tự đầu tiên rất thường xuyên khi chọn và sao chép giữa các thiết bị đầu cuối!
starfry

15

Những gì tôi đã làm để khắc phục vấn đề này là tôi sử dụng để chuyển đổi tệp PPK bằng cách sử dụng PuttyGen.

Đầu tiên tải urkey.PPK, sau đó trên menu chuyển đổi, nhấp vào xuất sang định dạng tệp Openssh. Nó sẽ tạo tập tin newkey.

hiện nay, ssh -i "newkey" user@127.0.0.1

Làm xong. Hy vọng nó giúp.


4

Tôi đã yêu cầu openssh sử dụng một tệp nhận dạng cụ thể bằng cách chỉ định nó trong tệp .ssh / config.

Cấu hình làm việc ban đầu có

IdentityFile = <path to public key file> 

Điều này đã ngừng hoạt động mà không có bất kỳ thay đổi. Suy nghĩ một chút, tôi đã thay thế "đường dẫn đến tệp khóa công khai" ở trên bằng "đường dẫn đến tệp khóa riêng". Điều đó đã làm việc. Lý do là cả các tệp khóa công khai và riêng tư đều có số lượng lớn liên quan đến peudoprime theo thuật toán RSA. Nếu bạn thay thế tệp khóa riêng bằng tệp khóa chung, các số mật mã này sẽ không được trích xuất chính xác từ khối base64 được lưu trong các tệp chính. Có vẻ như một số phiên bản của ssh có thể tìm ra phần mở rộng .pub và sử dụng nó để xác định tệp khóa riêng tư chính xác - và các phiên bản khác không làm được điều đó. Đây là một cách khác mà lỗi này có thể xảy ra. Hy vọng nó sẽ giúp được ai đó.


Trong trường hợp của tôi, tôi đã có configtập tin thiết lập path_to_public_keyvà mọi thứ đều hoạt động. Tuy nhiên, khi mac thực hiện khởi động lại mạnh mẽ và một vài ngày sau đó tôi đã cố gắng thực hiện git push, tôi bắt đầu nhận được lỗi nêu trên. Nhưng khi tôi đổi nó thành path_to_private_keymọi thứ đang hoạt động ... Hmmm. Không chắc tại sao ..
lukik

3

Tôi đã có cùng một vấn đề, và hóa ra tôi đã có các dấu tách dòng kiểu Windows (CRLF) trong tệp vì một số lý do.

Ngoài ra, tập tin phải kết thúc bằng một lần duy nhất.

Sửa chữa những điều làm cho dandy một lần nữa.


Điều gây sốc là việc LF cuối cùng là rất cần thiết, nhưng đó thực sự là một phần của vấn đề, với phần khác là tôi đã tạo tệp trong Windows và làm như vậy sẽ khiến dòng CRLF bị đứt. Đối với tham chiếu của những người khác, dos2unixlà lệnh chuyển đổi từ ngắt dòng CRLF (kiểu Windows) sang ngắt dòng (kiểu Linux).
Hashim

1

Bạn nên chuyển đổi khóa .ppk của mình sang khóa OpenSSH

Đây là cách bạn làm điều đó :

  1. Tải xuống PuttyGen và tạo cặp khóa của bạn (nếu bạn chưa sẵn sàng khóa). Lưu khóa riêng vào thư mục của bạn (.ppk)
  2. Nếu bạn đã có khóa riêng, hãy tải tệp khóa riêng (.ppk) bằng cách nhấn nút "Tải". Nếu không, bỏ qua bước này
  3. Trong menu "Chuyển đổi", chọn Xuất khóa OpenSSH rồi lưu vào thư mục của bạn
  4. Bây giờ bạn đã sẵn sàng sử dụng khóa để đăng nhập máy chủ của mình mà không cần nhập mật khẩu (Tôi giả sử bạn đã đặt khóa công khai dưới /root/.ssh/authorized_keys, chmod 600 /root/.ssh/authorized_keys và Khởi động lại quỷ SSH)

1

Tôi vừa mới bắt đầu điều này hôm nay khi đang viết một số tiện ích gắn thẻ git cho đường ống CI của tôi.

Đây là sự khác biệt giữa hai khóa của tôi:

$ diff ~/.ssh/gitlab ~/.ssh/git_ssh_key
27c27
< -----END OPENSSH PRIVATE KEY-----
---
> -----END OPENSSH PRIVATE KEY-----
\ No newline at end of file

Tôi đã thay đổi mã của mình như vậy:

     with open(ssh_key_file, 'w') as skf:
-        skf.write(ssh_key)
+        skf.write(ssh_key + '\n')

Và bây giờ khóa ssh của tôi hoạt động.

TL; DR - Tôi đoán bạn phải có một dòng mới ở cuối khóa riêng của bạn.


1

Trong trường hợp của tôi, hóa ra tôi có dòng mới giữa "tiêu đề" bắt đầu / kết thúc và dữ liệu chính:

-----BEGIN RSA PRIVATE KEY-----

- Key data here -

-----END RSA PRIVATE KEY-----

Loại bỏ các dòng mới, vì vậy nó đã trở thành

-----BEGIN RSA PRIVATE KEY-----
- Key data here -
-----END RSA PRIVATE KEY-----

giải quyết vấn đề của tôi


0

Sử dụng khóa riêng của bạn thay vì khóa chung.


cùng một giải pháp như câu trả lời của tôi - nơi một lời giải thích cũng được thêm vào
vpathak

0

Tôi gặp vấn đề này vì tôi có một khóa trong ~ / .ssh thực sự là một định dạng không hợp lệ và tôi có rất nhiều khóa, điều đó có nghĩa là SSH đã thử tất cả chúng, mặc dù tôi đã chỉ định tệp nhận dạng của mình trong lệnh. Nó chỉ xảy ra lỗi vì tôi chỉ có thể thử 5 khóa tôi nghĩ, và sau đó để lại cho tôi lỗi đó, đó là hợp pháp, chỉ vì tệp nhận dạng sai. Giải pháp là chỉ sử dụng IdentitiesOnly yestrong ~ / .ssh / config của tôi.


0

Tôi đã có lỗi này vì có một dòng trống ở đầu tập tin chính. Dễ bỏ lỡ nếu bạn đang cating nó ra.


0

Đây cũng là lỗi ssh (ít nhất là một số phiên bản) phát ra nếu bạn có cụm mật khẩu trên khóa riêng và nhập sai cụm mật khẩu khi bạn cố kết nối.

(Đặc biệt, điều này đã xảy ra với tôi với: OpenSSH_7.6p1, LibreSSL 2.6.2, đây là SSH tích hợp cho Mac OS X 10.13.6.)

Vì vậy, hãy kiểm tra kỹ xem bạn có đang sử dụng cụm mật khẩu đúng hay không và CAPS LOCK đã tắt.


-2

Đảm bảo bạn đổi tên khóa RIÊNG TƯ của bạn và xóa phần mở rộng tệp là vấn đề.

Các bước tôi đã thực hiện

Tạo khóa công khai của bạn:

Hãy chắc chắn rằng bạn đang ở trong cùng thư mục bạn có khóa riêng

Cách tạo Khóa công khai:

ssh-keygen -y -f Private-Key.pem > Public-key.pub

đảm bảo khóa PUBLIC có phần mở rộng tệp .pub

sau đó cung cấp quyền thích hợp cho lý do bảo mật:

chmod 600 Private-Key.pem
chmod 400 Public-key.pub

THEN phần quan trọng nhất và lý do bạn gặp lỗi "định dạng không hợp lệ"

Đảm bảo bạn đổi tên khóa RIÊNG TƯ và xóa phần mở rộng tệp:

Xóa .pem khỏi khóa riêng của bạn.

mv Private-Key.pem Private-Key

hoặc nếu trên máy tính windows đổi tên khóa riêng, cùng tên chỉ cần xóa .pem

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.