Jika selama pembuatan instance Linux di AWS, pasangan kunci (KeyPair) tidak dibuat untuk mengaksesnya melalui SSH atau mereka hilang, maka sejumlah operasi harus dilakukan untuk mendapatkan akses ke mesin. Anda tidak dapat menambahkan kunci ke instance yang sudah berjalan melalui konsol AWS. Ada tiga cara kita dapat mengembalikan akses SSH ke sebuah instance.
Cara termudah adalah
mengkonfigurasi kunci menggunakan mekanisme cloud-init (terima kasih atas petunjuk dari
yusman ). Tetapi itu tidak berfungsi jika hak ke direktori
/home
rusak atau distribusi tidak mendukung arahan cloud-init.
Cara kedua adalah
membuat gambar (Amazon Machine Image) dari instance yang ada dan kemudian meluncurkan instance baru berdasarkan itu, tetapi dengan kunci. Dengan demikian, mesin yang ada sebenarnya akan dikloning dengan satu-satunya perbedaan bahwa pada tahap terakhir dimungkinkan untuk membuat kunci baru. Membuat gambar dapat membutuhkan waktu lama untuk instance dengan disk besar, dan Anda harus mengonfigurasi semua layanan yang terkait dengan mesin ini lagi. Oleh karena itu, metode ini dalam banyak kasus akan memakan waktu lebih lama.
Dokumen resmi Amazon menjelaskan
cara lain . Ini memungkinkan Anda untuk memulihkan akses dan meminimalkan biaya layanan konfigurasi ulang (dibandingkan dengan metode kedua), yang terkait dengan sebuah instance yang kehilangan aksesnya. Artikel ini memberikan deskripsi langkah demi langkah.
Perhatian! Metode ini hanya berfungsi untuk instance yang menggunakan penyimpanan blok (Amazon Elastic Block Store) sebagai perangkat root, dan tidak berfungsi untuk penyimpanan instance lokal (Amazon EC2 Instance Store).Untuk mengetahui tipe perangkat root apa yang Anda gunakan, buka konsol Amazon EC2, buka
Instances , pilih sebuah instance dan periksa nilai parameter
tipe perangkat Root pada panel dengan informasi terperinci.
Jika mesin Anda memiliki
EBS , maka metode ini cocok untuk Anda.
Langkah 1. Persiapan
Pertama, Anda perlu menyimpan beberapa informasi sehingga Anda tidak perlu terganggu dan tidak beralih ke layar lain (terutama karena itu akan sangat merepotkan). Semua data dapat ditemukan dalam informasi terperinci dari instance (Anda sudah tahu bagaimana menuju ke sana). Rekam pengaturan berikut:
- ID Instans
- ID AMI
- ID EBS
- Perangkat root
- Zona ketersediaan
Untuk instance yang berjalan di
VPC , simpan nilai
ID VPC .
Untuk
EC2-classic : jika alamat IP elastis (
Elastic IP ) dibuat untuk sebuah instance, maka nilainya juga harus disimpan.
Gambar yang Dapat DiklikUntuk mendapatkan pengidentifikasi penyimpanan blok (
EBS ID ), klik pada nama
perangkat Root .
Langkah 2. Membuat instance sementara
Langkah selanjutnya adalah membuat instance yang dengannya Anda akan mengembalikan kunci pada instance asli. Anda dapat melewati langkah ini jika Anda memiliki instance berjalan lain yang terletak di zona yang sama (zona Ketersediaan) sebagai yang dipulihkan, dan pada saat yang sama ia dibuat menggunakan AMI yang sama atau versi sistem operasi di atasnya akan memungkinkan Anda untuk menghubungkan disk dari instance asli dan salin kunci SSH ke sana. Jika tidak ada contoh seperti itu, maka ikuti langkah-langkah ini:
- Pergi ke konsol EC2 (di dasbor atau di menu Instances ) dan klik Launch Instance
- Pada halaman pemilihan AMI ( Choose an Amazon Machine Image ), pilih yang digunakan untuk membuat instance asli (Anda menuliskannya di langkah pertama - ID AMI ). Jika karena alasan tertentu AMI ini tidak tersedia, Anda dapat membuat gambar dari instance asli dan menggunakannya, atau pilih tipe AMI yang dapat Anda sambungkan ke disket root dari instance yang dipulihkan.
- Pada halaman Choose an Instance Type , pilih tipe termurah yang tersedia.
- Pada halaman Konfigurasikan Detail Instance , tentukan Zona Ketersediaan yang sama seperti pada instance kami. Jika berjalan di VPC, pilih VPC yang sama di item Jaringan dan tentukan subnet di zona ini.
Namun, tidak perlu mengubah pengaturan Antarmuka Jaringan.
- Tidak diperlukan perubahan pada halaman Tambahkan Penyimpanan .
- Pada halaman tag ( Tambahkan Tag ), tambahkan nama untuk instance sementara sehingga mudah untuk diidentifikasi dan kemudian jangan buang waktu untuk merekonsiliasi ID Instans dan EBS , karena pada halaman-halaman di mana Anda perlu menentukan instance atau volume yang Anda kerjakan, dalam judul nilai ini akan muncul.
- Klik Tinjau dan Luncurkan lalu Luncurkan
- Langkah terakhir adalah memilih pasangan kunci yang ada atau membuat pasangan kunci yang baru. Unduh file kunci (pem) dan jangan lupa untuk membuat cadangan sehingga semua operasi tidak harus dilakukan lagi.
- Setelah menyimpan file, luncurkan instance dengan tombol Launch Instances
Langkah 3. Menghubungkan root disk dari mesin yang dipulihkan ke instance sementara
Pertama, Anda perlu melepaskan disk dari instance asli dan menghubungkannya ke yang sementara. Karena ini adalah disket root, instance asli harus dihentikan sebelum melepaskannya.
- Pergi ke konsol EC2 di bagian Instances dan pilih instance asli (itu dapat ditentukan oleh Instance ID yang direkam sebelumnya atau dengan nama yang berbeda dari yang Anda tentukan saat membuat instance sementara).
Selanjutnya dalam menu Tindakan - Status Instance - Stop .
Perhatian! Ketika instance berhenti, semua data pada penyimpanan lokal (Amazon EC2 Instance Store) dihapus. Jika Anda memiliki data tentang volume tersebut, jaga keselamatannya dengan memindahkannya ke penyimpanan permanen, jika perlu.
- Setelah instance dihentikan, buka bagian Elastic Block Store - Volume dan pilih volume root dari instance asli. Itu dapat ditentukan oleh Volume ID yang disimpan atau berdasarkan informasi dari kolom Informasi Lampiran , yang berisi nama instance.
Selanjutnya dalam menu Tindakan - Lepaskan Volume - Hubungkan volume ini ke instance sementara. Untuk melakukan ini, pilih lagi, lalu di menu Actions - Attach Volume dan di kotak dialog yang muncul, tentukan instance sementara Anda.
Kemudian klik Lampirkan . Jika instance asli dibuat melalui AWS Marketplace AMI dan bagian tersebut berisi kode AWS Marketplace, Anda akan menerima kesalahan yang menyatakan bahwa tidak mungkin untuk menghubungkan bagian dengan kode ke instance yang berfungsi.
Dalam hal ini, hentikan instance sementara kami dan ulangi langkah-langkah untuk menghubungkan volume root dari instance asli ke instance sementara. Upaya kedua harus berhasil.
- Anda seharusnya sekarang melihat bahwa kedua drive terhubung ke instance sementara.
- Jika Anda menghentikan instance, jalankan:
- Buka bagian Mesin Virtual dari bilah navigasi.
- Pilih contoh sementara
- Selanjutnya dalam menu Tindakan - Status Instance - Mulai .
Langkah 4. Mempersiapkan kunci untuk menghubungkan ke instance melalui SSH
Pengguna Linux tidak perlu membuat kunci tambahan apa pun. Anda hanya perlu memberikan izin baca ke file ini:
chmod 400 my-keypair.pem
Persiapan kunci jika Anda menjalankan WindowsUntuk terhubung ke mesin Linux, kami akan menggunakan utilitas Putty, jadi jika Anda belum menginstalnya,
unduh . Untuk terhubung melalui SSH menggunakannya, Anda akan memerlukan
kunci ppk , sementara dengan AWS, kunci dalam format
pem disimpan . Untuk mendapatkan kunci ke format yang diinginkan, lakukan hal berikut:
- Buka PuTTYgen (diinstal dengan Putty)
- Pilih 2048 bit dalam parameter RSA
- Unduh kunci pem disimpan dengan mengklik Muat (Memuat file kunci pribadi yang ada)
- Tentukan frasa sandi (frasa sandi kunci ) dan konfirmasikan ( konfirmasi frasa sandi ). Ini tidak perlu, tetapi lebih aman. Satu-satunya perbedaan adalah ketika menghubungkan menggunakan kunci ini, Anda akan selalu diminta untuk memasukkan frasa ini untuk mengkonfirmasi entri
- Simpan file dengan nama yang Anda tentukan saat membuat pasangan kunci ( KeyPair ) selama pembuatan instance sementara (nama tersebut bertepatan dengan nama kunci pem )
Kuncinya sudah siap.
Langkah 5. Hubungkan ke instance sementara melalui SSH
Sambungkan pada port 22 menggunakan tombol. Nama pengguna bergantung pada AMI mana yang digunakan untuk membuat instance. Anda menuliskannya di awal. Nama pengguna berikut dimungkinkan:
- Amazon Linux 2 atau Amazon Linux AMI - ec2-user
- Centos AMI - centos
- AMI Debian - admin atau root
- AMI Fedora - pengguna ec2 atau fedora
- RHEL AMI - ec2-user atau root
- SUSE AMI - ec2-user atau root
- Ubuntu AMI - ubuntu
- Selebihnya, jika nama ec2-user dan root tidak berfungsi, hubungi penyedia AMI Anda
Nama host yang ingin Anda hubungkan adalah
user@aws-host.amazon.com , di mana
pengguna adalah nama yang dijelaskan di atas, dan
aws-host.amazon.com adalah alamat ip instance Anda, yang dapat ditemukan pada tab informasi terperinci (darinya Anda menyimpan parameter di awal). Parameter ini disebut
IPv4 Public IP . Harap dicatat bahwa jika Anda tidak menggunakan
IP Elastis , setiap kali Anda memulai, ia akan memiliki alamat ip baru.
Petunjuk Koneksi untuk Pengguna Windows Langkah 6. Menyalin kunci dari instance sementara ke yang asli
Pasang volume yang Anda sambungkan ke instance sementara sehingga Anda dapat mengakses sistem file-nya.
Mount PartitionMisalnya, jika nama drive adalah
/dev/sdf
(ini mungkin muncul secara berbeda pada instance Anda), gunakan operasi berikut untuk memasang volume di
/mnt/tempvol
:
Salin kunci SSH dari instance sementara ke partisi yang dipasang.
Perhatian! Gunakan nama pengguna yang disediakan pada baris perintah. Ini perlu, karena meskipun Anda telah berhasil terhubung dengan nama pengguna standar, yang tergantung pada sistem operasi (dijelaskan pada langkah 5), di AMI dari AWS Marketplace mungkin berbeda setelah masuk. Misalnya, untuk AMI WordPress Certified oleh Bitnami, ketika masuk melalui SSH, login standar untuk Ubuntu adalah ubuntu
. Namun, nama pengguna setelah masuk adalah bitnami
Salin kunciMisalnya, jika nama pengguna adalah
ubuntu
, gunakan perintah berikut untuk menyalin:
[user ~]$ cp .ssh/authorized_keys /mnt/tempvol/home/ ubuntu /.ssh/authorized_keys
Jika Anda tidak memiliki izin untuk mengedit file di
/mnt/tempvol
, maka salin file menggunakan
sudo
dan periksa hak untuk memastikan bahwa Anda dapat mengakses contoh asli:
- Periksa izin file:
[user ~]$ sudo ls -l /mnt/tempvol/home/ ubuntu /.ssh/authorized_keys
total 4
-rw------- 1 200 500 392 Aug 15 00:06 authorized_keys
Dalam contoh, 200 adalah ID pengguna dan 500 adalah ID grup.
- Mulai ulang perintah salin kunci menggunakan
sudo
:
[user ~]$ sudo cp .ssh/authorized_keys /mnt/tempvol/home/ ubuntu /.ssh/authorized_keys
- Periksa apakah izin pada file telah berubah:
[user ~]$ sudo ls -l /mnt/tempvol/home/ ubuntu /.ssh/authorized_keys
Jika hak telah berubah, pulihkan:
[user ~]$ sudo chown 200 : 500 /mnt/tempvol/home/ ubuntu /.ssh/authorized_keys
Lepas bagian:
[user ~]$ sudo umount /mnt/tempvol
Langkah 7. Memulai instance dengan akses yang dipulihkan melalui SSH
- Di konsol EC2, pilih drive yang Anda sambungkan ke sementara, dan di menu: Tindakan - Lepaskan Volume . Tunggu hingga status disk tersedia (Anda dapat menggunakan tombol Refresh untuk memperbarui informasi).
Ingatlah untuk menghentikan pra-instance jika bagian tersebut berisi kode AWS Marketplace.
- Untuk drive yang sama, buka menu Tindakan - Lampirkan Volume
- Pilih instance asli dan tentukan nama disk root yang Anda rekam di awal.
Gambar yang Dapat Diklik
Klik Lampirkan
- Jalankan instance
- Untuk EC2-classic : jika Elastic IP dikonfigurasi untuk instance asli, kaitkan kembali dengan itu:
- Pergi ke bagian IP Elastis dari bilah navigasi.
- Pilih alamat IP elastis yang Anda tulis di awal
- Tindakan Selanjutnya - Alamat asosiasi
- Pilih ID instance asli dan klik Rekanan
Langkah 8. Periksa Akses
Hubungkan ke instance akses yang dipulihkan menggunakan kunci yang dibuat.
Jika nama pasangan kunci baru berbeda dari yang sebelumnya, pastikan Anda menghubungkan menggunakan kunci pribadi baru.Langkah 9. Tahap terakhir
Jika Anda membuat instance sementara baru untuk melakukan semua operasi, dan tidak menggunakan yang sudah ada, hentikan jika Anda tidak lagi membutuhkannya:
- Buka bagian Mesin Virtual dari bilah navigasi.
- Pilih contoh sementara
- Selanjutnya dalam menu Tindakan - Status Instance - Hentikan
Dengan cara ini Anda mendapatkan kembali akses ke instance Linux Amazon EC2.