Làm cách nào để lấy tệp .pem từ cặp khóa ssh?


33

Tôi đã tạo một cặp khóa bằng ssh-keygen và nhận được hai clasic id_rsa và id_rsa.pub.

Tôi đã nhập khóa công khai vào tài khoản AWS EC2 của mình.

Bây giờ tôi đã tạo một phiên bản windows và để giải mã mật khẩu cá thể đó, bảng điều khiển AWS đang yêu cầu tôi cho một tệp .pem. Làm cách nào tôi có thể lấy tệp .pem đó từ hai tệp id_rsa và id_rsa.pub của tôi?


2
Khóa riêng đã ở định dạng PEM và có thể được sử dụng nguyên trạng.
Michael Hampton

@MichaelHampton, điều này sẽ phụ thuộc vào phiên bản của ssh-keygen và lệnh được sử dụng để tạo cặp khóa. Một số phiên bản sử dụng RFC4716 theo mặc định, thay vì PEM.
austinian 16/07/2015

Câu trả lời:


44

Theo đó , lệnh này có thể được sử dụng:

ssh-keygen -f id_rsa -e -m pem

Điều này sẽ chuyển đổi khóa công khai của bạn sang định dạng tương thích OpenSSL. Khóa riêng của bạn đã ở định dạng PEM và có thể được sử dụng như hiện tại (như Michael Hampton đã nêu).

Kiểm tra lại nếu AWS không yêu cầu cho một (X.509) Giấy chứng nhận ở định dạng PEM, đó sẽ là một điều khác biệt so với các phím SSH của bạn.


Nhưng họ không cần khóa công khai phải không? Họ cần khóa riêng để giải mã mật khẩu từ Bảng điều khiển AWS
Michael Bailey

Tôi không biết OP cần cái này để làm gì.
fuero 16/07/2015

Không chắc chắn mức độ quen thuộc của bạn với AWS, nhưng khi bạn quay phiên bản windows (về cơ bản là máy chủ) AWS sẽ giữ mật khẩu từ bạn cho đến khi bạn cung cấp cho họ khóa riêng của bạn. Sau đó, họ cung cấp cho bạn mật khẩu máy chủ. Bằng cách đó, các máy chủ Windows và Linux trên AWS đều phụ thuộc vào khóa riêng.
Michael Bailey

1
Điều này không làm việc trên OS X (ssh -v ==> OpenSSH_6.2p2)
chrish

3
trái với tài liệu này, nó sẽ xuất khóa PUBLIC ở định dạng PEM chứ không phải khóa riêng. hiện tại ssh-keygen không hỗ trợ chuyển đổi khóa riêng.
morgwai

21

Sử dụng ssh-keygenđể xuất khóa ở định dạng .pem làm việc cho tôi.

ssh-keygen -f id_rsa.pub -m 'PEM' -e > id_rsa.pem

Sau đó, chỉ cần sao chép .pemchìa khóa khi cần thiết.

Để tham khảo:

  • các -f id_rsa.pubphần chỉ ra tập tin đầu vào để đọc từ
  • -m 'PEM chỉ ra một kiểu tệp PEM
  • các -etùy chọn chỉ ra rằng sản lượng sẽ được xuất khẩu

5

id_rsa là tệp mà bạn phải sử dụng để giải mã mật khẩu phiên bản Windows EC2, nhưng chỉ cần đảm bảo rằng tệp bạn sao chép dán không được bảo vệ cụm từ.

Tôi đã giải quyết vấn đề nhận id_rsatệp tạm thời không được bảo vệ bằng một cái gì đó như:

$ openssl rsa -in ~/.ssh/id_rsa -out tmp_file.pem

2

Ban đầu, khi sử dụng ssh-keygen, tôi có thể tạo khóa công khai tương thích với AWS EC2, nhưng gặp vấn đề với việc tạo khóa riêng tương thích. Sau đây tạo cả cặp khóa công khai và khóa riêng tương thích với AWS EC2.

ssh-keygen -P "" -t rsa -b 4096 -m pem -f my-key-pair

Đây là thông tin về từng tham số:

  • -P: dành cho cụm mật khẩu. Cố ý đặt thành trống.
  • -t: Chỉ định loại khóa cần tạo. Cặp khóa AWS EC2 yêu cầu RSA. Đó là kinh nghiệm của tôi rằng điều này liên quan đến khóa công khai được tạo.
  • -b: Chỉ định số lượng bit trong khóa. Độ dài được hỗ trợ là 1024, 2048 và 4096. Nếu bạn kết nối bằng SSH trong khi sử dụng API EC2 Instance Connect, độ dài được hỗ trợ là 2048 và 4096.
  • -m: Chỉ định định dạng khóa để tạo khóa. Đặt định dạng của PEM của PEM, khi tạo loại khóa riêng được hỗ trợ sẽ khiến khóa được lưu trữ ở định dạng khóa riêng PEM cũ. Cặp khóa AWS EC2 cần định dạng cũ
  • -f: Chỉ định tên tệp đầu ra của tệp khóa

Tài nguyên:

Để biết thêm thông tin về ssh-keygen, hãy xem:  https://man.openbsd.org/ssh-keygen.1

AWS - Cặp khóa EC2 -  https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html


Mike đã chọn không bao gồm tài liệu cho tùy chọn '-b'. Có lẽ rõ ràng với một số người, điều đó có nghĩa là "xin vui lòng mã hóa 4096 bit". Như đã nêu trong tài liệu AWS được liên kết, "Độ dài được hỗ trợ là 1024, 2048 và 4096. Nếu bạn kết nối bằng SSH trong khi sử dụng API EC2 Instance Connect, độ dài được hỗ trợ là 2048 và 4096."
nclark

@nclard, Không chắc tại sao tôi lại bỏ tham số -b đó. Chỉ cần thêm nó.
Mike Barlow - BarDev

0

Khi bạn khởi chạy một thể hiện EC2, bạn gán cho nó một cặp khóa (hoặc không có). Nó không thể được thay đổi sau đó.

Chỉ sử dụng tệp .pem từ cặp khóa đó, bạn mới có thể giải mã mật khẩu Windows.

Tệp .pem sẽ được tải xuống khi cặp khóa được tạo. Bạn không thể lấy lại lần nữa. Nếu bạn đã mất nó, bạn không gặp may.

Bạn không thể sử dụng tệp .pem do bạn tự tạo trừ khi bạn nhập khóa đó vào AWS trước khi phiên bản được khởi chạy và gán nó vào thể hiện.

Nói một cách đơn giản, nếu bạn không có tệp .pem gốc, bạn không thể lấy mật khẩu.

Chỉnh sửa: sau khi đọc lại câu hỏi, tôi nhận ra OP đã nhập khóa của mình vào AWS.

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.