ssh-keygen không tạo khóa riêng RSA


71

Tôi đang cố gắng tạo một khóa riêng và gặp sự cố.

Khi tôi sử dụng ssh-keygen -t rsa -b 4096 -C "your_email@example.com", tôi nhận được một khóa riêng ở định dạng sau.

-----BEGIN OPENSSH PRIVATE KEY-----
uTo43HGophPo5awKC8hoOz4KseENpgHDLxe5UX+amx8YrWvZCvsYRh4/wnwxijYx
...
-----END OPENSSH PRIVATE KEY-----

Và điều này không được chấp nhận cho một ứng dụng mà tôi đang cố gắng sử dụng.

Tôi đang mong đợi một khóa ở định dạng RSA sau.

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,25737CC2C70BFABADB1B4598BD8AB9E9

uTo43HGophPo5awKC8hoOz4KseENpgHDLxe5UX+amx8YrWvZCvsYRh4/wnwxijYx
...
-----END RSA PRIVATE KEY-----

Làm cách nào để tạo định dạng đúng? Điều này thật kỳ lạ bởi vì mọi mac khác tôi đã tạo định dạng chính xác, ngoại trừ cái tôi đang gặp vấn đề.

Tôi đang dùng Mac OS Mojave mới cài đặt


và các máy Mac khác không có trên Mojave? Tôi cũng đang sử dụng Mojave và nhận được định dạng khóa openssh "mới". Vì vậy, tôi cho rằng các máy Mac khác là phiên bản thấp hơn. Kiểm tra phiên bản OpenSSL được sử dụng.
Zina

@Zina các máy Mac khác cũng có trên Mojave và có cùng phiên bản OpenSSL.
Mặt trăng

RSA phải là loại mặc định. Điều gì nếu bạn bỏ qua các -t rsatùy chọn hoàn toàn?
guzzijason

@guzzijason nó giống nhau. Đó là điều khiến tôi phát điên. Ngay cả khi tôi bỏ qua -t rsa trên máy mac của tôi (nó đang hoạt động), nó vẫn tạo RSA chính xác.
Mặt trăng

Tôi đã có cùng một vấn đề. Như cách giải quyết, tôi đã sử dụng phiên bản openssh cũ hơn để tạo khóa. Bạn có thể kiểm tra xem khóa được tạo của mình có đúng không với openssl rsa -text -in key_file -passin 'pass: cụm từ mật khẩu'. Phiên bản 7.4p1-16 hoạt động.
gõ vào

Câu trả lời:


76

Tôi đã đối mặt với cùng một vấn đề gần đây (sau khi nâng cấp lên mojave 10.14.1), đây là 2 giải pháp khả thi cho vấn đề này.

  • Hạ cấp nhị phân ssh-keygen của bạn (bạn có thể dễ dàng lấy phiên bản cũ từ bất kỳ hình ảnh linux / docker nào)

HOẶC LÀ

  • Thêm tùy chọn -m PEMvào lệnh ssh-keygen của bạn. Ví dụ: bạn có thể chạy ssh-keygen -m PEM -t rsa -b 4096 -C "your_email@example.com"để buộc ssh-keygen xuất dưới PEMdạng định dạng.

Có vẻ như trong phiên bản ssh-keygen hiện tại trong mojave, định dạng xuất mặc định được RFC4716đề cập ở đây


1
Định dạng xuất công khai mặc định thực sự là rfc4716, nhưng định dạng trong Q là định dạng khóa riêng nội bộ và là định dạng 'mới' của OpenSSH, không tồn tại vào năm 1999 (!), Và không còn được mô tả trong hiện tại; thử 6.0 đến 6.3.
dave_thndry_085

3
Tôi không thể chỉnh sửa câu trả lời nhưng xin lưu ý rằng 1. và 2. là các giải pháp độc lập, không phải là các bước tuần tự. Bạn KHÔNG cần hạ cấp để tạo khóa một lần. Chỉ cần thêm-m PEM
sdoxsee

49

Các khóa mới với định dạng khóa riêng OpenSSH có thể được chuyển đổi bằng tiện ích ssh-keygen sang định dạng PEM cũ.

ssh-keygen -p -m PEM -f ~/.ssh/id_rsa

Không cần hạ cấp xuống OpenSSH cũ chỉ để đạt được kết quả này.


Đúng. Giống như tôi đã đề cập trong các ý kiến ​​về câu trả lời được chấp nhận. serverfault.com/questions/939909/ từ
sdoxsee

9
Điều không rõ ràng trong câu trả lời được chấp nhận là bạn không cần tạo cặp khóa mới. Bạn có thể lấy khóa hiện tại của mình và chuyển đổi chúng bằng lệnh đó. Nó ghi đè lên tệp, vì vậy tôi nghĩ rằng đó là một ý tưởng tốt để tạo bản sao lưu trước, chỉ trong trường hợp.
martintama

Cảm ơn bạn đã thêm hướng dẫn về cách chuyển đổi khóa riêng hiện có sang định dạng RSA. Chỉ cần cứu thịt xông khói của tôi!
Craig Blaszchot
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.