Mật khẩu Windows sẽ không giải mã được trên AWS EC2 ngay cả với khóa riêng đúng


21

Tôi đã tạo một phiên bản Windows mới trên AWS EC2, bằng cách sử dụng khóa ghép mà tôi đã tạo bằng cách tải lên khóa công khai từ máy cục bộ của mình.

Ví dụ đã khởi chạy tốt, nhưng nó sẽ không giải mã được mật khẩu. Nó báo cáo:

Khóa riêng phải bắt đầu bằng "----- BEGIN RSA PRIVATE KEY -----" và kết thúc bằng "----- END RSA PRIVATE KEY -----"

Tôi chắc chắn tôi đã tải lên khóa chính xác. Tôi đã xác minh rằng dấu vân tay khớp với định dạng vân tay lạ mà AWS sử dụng . Nhưng nó sẽ không giải mã được.

Tôi đã thử tải lên tệp chính và dán nó vào biểu mẫu.

Cuối cùng tôi đã nhận ra rằng nó không tước dòng mới, và xóa dòng trống trong khóa. Điều đó chỉ khiến tôi gặp phải một lỗi mới khi tôi nhấp vào "Giải mã mật khẩu", mặc dù:

Có lỗi khi giải mã mật khẩu của bạn.  Vui lòng đảm bảo rằng bạn đã nhập khóa riêng của mình một cách chính xác.

Câu trả lời:


22

Quản lý khóa của AWS EC2 không đối phó với các khóa riêng SSH có mật khẩu được đặt (được mã hóa). Nó không phát hiện ra điều này và chỉ đơn giản là thất bại với một lỗi không chính xác.

Nếu khóa riêng của bạn được lưu trữ được mã hóa trên đĩa (giống như vậy, IMO), bạn phải giải mã nó để dán vào bảng điều khiển của AWS.

Thay vì làm điều đó, hãy xem xét giải mã mật khẩu cục bộ, vì vậy bạn không phải gửi khóa riêng của mình đến AWS. Lấy dữ liệu mật khẩu được mã hóa (mã hóa base64) từ nhật ký máy chủ sau khi khởi động hoặc sử dụng get-password-data hoặc các yêu cầu API tương ứng.

Sau đó, bạn có thể giải mã Base64 và giải mã kết quả:

base64 -d /tmp/file | openssl rsautl -decrypt -inkey /path/to/aws/private/key.pem

(Khóa riêng OpenSSH được chấp nhận bởi openssl rsautl).

Vấn đề với thất bại trong việc xử lý các mật khẩu khóa bảo vệ với một lỗi hữu ích cũng ảnh hưởng đến các ec2-get-passwordlệnh .

Xem thêm:


1
Cảm ơn. Đây là một dòng lệnh hoàn chỉnh mà tôi sử dụng, theo đề xuất của bạn: aws ec2 get-password-data "--instance-id=${instance_id}" | jq -r .PasswordData | base64 -D | openssl rsautl -decrypt -inkey ${my_key} (sử dụng aws-clijq ).
Ben Butler-Cole

Base64 phàn nàn về công việc -dnhư vậy -Dđối với tôi. tôi trên OS X
Saad Masood

2
Trong OS X, tôi sẽ thêm một lệnh nữa vào đường dẫn đó: aws ec2 get-password-data "--instance-id=${instance_id}" | jq -r .PasswordData | base64 -D | openssl rsautl -decrypt -inkey ${my_key} | pbcopy ... sẽ gửi mật khẩu thẳng vào bảng tạm của bạn.
Mark Maglana

1
Điều này nên được đánh dấu là câu trả lời đúng IMHO. Vì các câu trả lời khác hơi không an toàn so với câu hỏi này
webofmars 14/11/18

4

Không sử dụng jq, điều này vẫn có thể nhưng yêu cầu một số phân tích bổ sung của dữ liệu được trả về.

aws ec2 get-password-data "--instance-id=${instance_id}" --query 'PasswordData' | sed 's/\"\\r\\n//' | sed 's/\\r\\n\"//' | base64 -D | openssl rsautl -inkey ${my_key} -decrypt

Hoạt động rất tốt, trên WSL Ubuntu tôi phải sử dụng base64 -dchứ không phải -D.
Seth Stone

3

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

openssl rsa -in $HOME/.ssh/aws-remote -out /Users/home/desktop/unencrypted-rsa.txt

Lưu ý rằng bạn có thể biết liệu tệp .pem của mình có được mã hóa bằng mật khẩu hay không bằng cách tìm dòng sau. Nếu có, bạn cần giải mã nó trước khi sử dụng với Amazon:

Proc-Type: 4,ENCRYPTED

Đối với tôi đó là giải pháp. Giao diện người dùng AWS không phát hiện ra rằng khóa được bảo vệ cụm mật khẩu và sau đó bạn cần giải mã nó trước đó. Đây là loại không an toàn mặc dù. Vì vậy, loại bỏ các tập tin được giải mã sau đó.
webofmars

2

Trên máy Mac của tôi, các đối số dòng lệnh cho base64 là khác nhau.

Điều này làm việc cho tôi:

base64 -D -i /tmp/file | openssl rsautl -decrypt -inkey /path/to/key.pem

-1
  1. đi đến bảng điều khiển ec2
  2. xóa khóa hiện có
  3. tạo một cặp chìa khóa mới
  4. chọn một cái tên
  5. tải về và giữ nó ở địa phương
  6. khởi động thể hiện và tải xuống bản sao windows của bạn
  7. Đặt tên cho khóa mới với tên được sử dụng trong bước 4
  8. sử dụng khóa mới được tạo này để giải mã mật khẩu

cái này sẽ hoạt động


1
Vâng, nó sẽ hoạt động. Nhưng nó cũng bỏ lỡ vấn đề - Tôi đang giải thích trường hợp bạn tải lên một khóa cục bộ.
Craig Ringer
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.