Kata Sandi Windows tidak akan mendekripsi pada AWS EC2 bahkan dengan kunci pribadi yang benar

21

Saya membuat instance Windows baru pada AWS EC2, menggunakan keypair yang saya buat dengan mengunggah kunci publik saya dari mesin lokal saya.

Contoh diluncurkan dengan baik, tetapi itu tidak akan mendekripsi kata sandi. Melaporkan:

Kunci pribadi harus dimulai dengan "----- BEGIN RSA PRIVATE KEY -----" dan diakhiri dengan "----- END KUNCI PRIVATE RSA -----"

Saya yakin saya mengunggah kunci yang benar. Saya telah memverifikasi bahwa sidik jari cocok dengan format sidik jari aneh yang digunakan AWS . Tapi itu tidak akan mendekripsi.

Saya sudah mencoba mengunggah file kunci, dan menempelkannya ke dalam formulir.

Saya akhirnya menemukan bahwa itu tidak menghapus baris baru, dan menghapus baris kosong di kunci. Itu hanya membuat saya mendapatkan kesalahan baru ketika saya mengklik "Dekripsi Kata Sandi", meskipun:

Terjadi kesalahan saat mendekripsi kata sandi Anda.  Harap pastikan bahwa Anda telah memasukkan kunci pribadi Anda dengan benar.

Craig Ringer
sumber

Jawaban:

22

Manajemen kunci AWS EC2 tidak mengatasi kunci pribadi SSH yang memiliki kata sandi yang ditetapkan (dienkripsi). Itu tidak mendeteksi ini, dan hanya gagal dengan kesalahan tidak informatif.

Jika kunci pribadi Anda disimpan terenkripsi di disk (seperti seharusnya, IMO), Anda harus mendekripsi itu untuk menempelkannya ke konsol AWS.

Daripada melakukan itu, pertimbangkan mendekripsi kata sandi secara lokal, jadi Anda tidak perlu mengirim kunci pribadi Anda ke AWS. Dapatkan data kata sandi terenkripsi (base64 disandikan) dari log server setelah startup, atau gunakan get-password-data atau permintaan API yang sesuai.

Anda kemudian dapat base64 mendekode dan mendekripsi hasilnya:

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

(Kunci pribadi OpenSSH diterima oleh openssl rsautl ).

Masalah dengan gagal sandi pegangan dilindungi kunci dengan kesalahan yang berguna juga mempengaruhi para ec2-get-passwordperintah .

Lihat juga:

Craig Ringer
sumber
1
Terima kasih. Berikut ini adalah baris perintah lengkap yang saya gunakan, mengikuti saran Anda: aws ec2 get-password-data "--instance-id=${instance_id}" | jq -r .PasswordData | base64 -D | openssl rsautl -decrypt -inkey ${my_key} (menggunakan aws-cli dan jq ).
Ben Butler-Cole
base64 mengeluh tentang -dbegitu -Dbekerja untuk saya. im pada OS X
Saad Masood
2
Di OS X, saya akan menambahkan satu perintah lagi ke pipa itu: aws ec2 get-password-data "--instance-id=${instance_id}" | jq -r .PasswordData | base64 -D | openssl rsautl -decrypt -inkey ${my_key} | pbcopy ... yang mengirimkan kata sandi langsung ke clipboard Anda.
Mark Maglana
1
Ini harus ditandai sebagai jawaban IMHO yang benar. Karena jawaban yang lain agak tidak aman dibandingkan dengan yang ini
webofmars
4

Tanpa menggunakan jq, ini masih mungkin tetapi membutuhkan beberapa penguraian tambahan dari data yang dikembalikan.

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
Ben
sumber
Bekerja dengan baik, pada WSL Ubuntu saya harus menggunakan base64 -ddaripada -D.
Seth Stone
3

Inilah yang bekerja untuk saya di macOS:

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

Perlu dicatat bahwa Anda dapat mengetahui apakah file .pem Anda dienkripsi dengan kata sandi dengan mencari baris berikut. Jika ada, Anda perlu mendekripsi sebelum menggunakannya dengan Amazon:

Proc-Type: 4,ENCRYPTED
Django Reinhardt
sumber
Bagi saya itu solusinya. AWS UI tidak mendeteksi bahwa kunci dilindungi frasa sandi dan kemudian Anda harus mendekripsi sebelumnya. Ini agak tidak aman. Jadi hapus file yang didekripsi sesudahnya.
webofmars
2

Di Mac saya, argumen baris perintah untuk base64 berbeda.

Ini bekerja untuk saya:

base64 -D -i /tmp/file | openssl rsautl -decrypt -inkey /path/to/key.pem
Dan
sumber
-1
  1. pergi ke dasbor EC2
  2. hapus kunci yang ada
  3. buat pasangan kunci baru
  4. pilih nama
  5. unduh dan simpan di tempat lokal
  6. luncurkan instance dan unduh salinan instance windows Anda
  7. beri nama keypair baru dengan nama yang digunakan pada langkah 4
  8. gunakan kunci yang baru dibuat ini untuk mendekripsi kata sandi

ini akan berhasil

Arun Mohan
sumber
1
Ya, itu akan berhasil. Tapi itu juga agak meleset - saya menjelaskan kasus di mana Anda mengunggah kunci lokal.
Craig Ringer