Anda tidak dapat menerapkan keypair ke instance yang berjalan. Anda hanya dapat menggunakan keypair baru untuk meluncurkan instance baru.
Untuk pemulihan, jika ini adalah boot AMI EBS, Anda dapat menghentikannya, membuat snapshot volume. Buat volume baru berdasarkan itu. Dan dapat menggunakannya kembali untuk memulai contoh lama, membuat gambar baru, atau memulihkan data.
Padahal data di penyimpanan sesaat akan hilang.
Karena popularitas pertanyaan dan jawaban ini, saya ingin menangkap informasi di tautan yang diposting Rodney pada komentarnya.
Penghargaan diberikan kepada Eric Hammond untuk informasi ini .
Memperbaiki File pada Volume EBS Root dari Mesin Virtual EC2
Anda dapat memeriksa dan mengedit file pada volume EBS root pada instance EC2 bahkan jika Anda berada dalam situasi yang Anda anggap seperti bencana:
- Anda kehilangan kunci ssh atau lupa kata sandi
- Anda membuat kesalahan saat mengedit file / etc / sudoers dan tidak dapat lagi mengakses root dengan sudo untuk memperbaikinya
- Instansi lama Anda berjalan digantung karena alasan tertentu, tidak dapat dihubungi, dan gagal untuk boot dengan benar
- Anda perlu memulihkan file dari instance tetapi tidak bisa mendapatkannya
Pada komputer fisik yang duduk di meja Anda, Anda bisa mem-boot sistem dengan CD atau stik USB, pasang hard drive, periksa dan perbaiki file-file tersebut, kemudian reboot komputer untuk kembali berbisnis.
Contoh EC2 jarak jauh, tampaknya jauh dan tidak dapat diakses ketika Anda berada dalam salah satu situasi ini. Untungnya, AWS memberi kita kekuatan dan fleksibilitas untuk dapat memulihkan sistem seperti ini, asalkan kita menjalankan instance boot EBS dan bukan instance-store.
Pendekatan pada EC2 agak mirip dengan solusi fisik, tetapi kita akan memindahkan dan memasang "hard drive" yang salah (volume root EBS) ke contoh yang berbeda, memperbaikinya, lalu memindahkannya kembali.
Dalam beberapa situasi, mungkin lebih mudah untuk memulai contoh EC2 baru dan membuang yang buruk, tetapi jika Anda benar-benar ingin memperbaiki file Anda, berikut adalah pendekatan yang telah bekerja untuk banyak orang:
Mempersiapkan
Identifikasi instance asli (A) dan volume yang berisi volume EBS root yang rusak dengan file yang ingin Anda lihat dan edit.
instance_a=i-XXXXXXXX
volume=$(ec2-describe-instances $instance_a |
egrep '^BLOCKDEVICE./dev/sda1' | cut -f3)
Identifikasi instance EC2 kedua (B) yang akan Anda gunakan untuk memperbaiki file pada volume EBS asli. Mesin virtual ini harus dijalankan di zona ketersediaan yang sama dengan mesin contoh A sehingga dapat memiliki volume EBS yang menyertainya. Jika Anda belum memiliki instance yang berjalan, mulailah yang sementara.
instance_b=i-YYYYYYYY
Hentikan instance yang rusak A (tunggu sampai berhenti total), lepaskan volume EBS root dari instance (tunggu sampai terlepas), lalu pasang volume ke instance B pada perangkat yang tidak digunakan.
ec2-stop-instances $instance_a
ec2-detach-volume $volume
ec2-attach-volume --instance $instance_b --device /dev/sdj $volume
ssh ke instance B dan pasang volume sehingga Anda dapat mengakses sistem file-nya.
ssh ...instance b...
sudo mkdir -p 000 /vol-a
sudo mount /dev/sdj /vol-a
Memperbaikinya
Pada titik ini seluruh sistem file root Anda dari instance A tersedia untuk dilihat dan diedit di / vol-a pada instance B. Misalnya, Anda mungkin ingin:
- Masukkan kunci ssh yang benar di /vol-a/home/ubuntu/.ssh/authorized_keys
- Edit dan perbaiki / vol-a / etc / sudoers
- Cari pesan kesalahan di / vol-a / var / log / syslog
- Salin file penting dari / vol-a / ...
Catatan: Uids pada dua instance mungkin tidak identik, jadi berhati-hatilah jika Anda membuat, mengedit, atau menyalin file milik pengguna non-root. Sebagai contoh, pengguna mysql Anda pada contoh A mungkin memiliki UID yang sama dengan pengguna postfix Anda pada contoh B yang dapat menyebabkan masalah jika Anda memberi tahu file dengan satu nama dan kemudian memindahkan volume kembali ke A.
Bungkus
Setelah selesai dan Anda senang dengan file-file di bawah / vol-a, unmount sistem file (masih pada instance-B):
sudo umount /vol-a
sudo rmdir /vol-a
Sekarang, kembali ke sistem Anda dengan ec2-api-tools, lanjutkan memindahkan volume EBS kembali ke rumah itu pada instance A asli dan mulai instance lagi:
ec2-detach-volume $volume
ec2-attach-volume --instance $instance_a --device /dev/sda1 $volume
ec2-start-instances $instance_a
Mudah-mudahan, Anda memperbaiki masalah, misalnya A muncul dengan baik, dan Anda dapat mencapai apa yang awalnya Anda lakukan. Jika tidak, Anda mungkin perlu terus mengulangi langkah-langkah ini sampai Anda berhasil.
Catatan: Jika Anda memiliki alamat IP elastis yang ditetapkan untuk instance A ketika Anda menghentikannya, Anda harus menghubungkannya kembali setelah memulai kembali.
Ingat! Jika instance B Anda untuk sementara waktu dimulai hanya untuk proses ini, jangan lupa untuk menghentikannya sekarang.
ssh-add
harus melakukan apa yang Anda butuhkan.