Petunjuk langkah demi langkah untuk mendapatkan kembali akses ke Linux Amazon EC2 saat kehilangan file pem

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.

Jenis perangkat root instan

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.

Pengaturan Instance untuk Menyimpan
Gambar yang Dapat Diklik

Untuk mendapatkan pengidentifikasi penyimpanan blok ( EBS ID ), klik pada nama perangkat Root .

ID EBS


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.

    Mengkonfigurasi Zona Ketersediaan

    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.

    Nama di halaman Tambahkan Tag

  • 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.

    Menyimpan KeyPair
  • 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).

    Berhenti Instans

    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.

    Bisukan drive

    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.

    Drive koneksi

    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.

    Kesalahan menghubungkan drive dengan kode AWS Marketplace

    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.

    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 Windows
Untuk 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

    RSA 2048 bit
  • 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
  • Luncurkan Putty
  • Di bidang Nama Host , alamat tersebut dalam format nama pengguna @ ip-address

    Konfigurasikan Putty. Nama host

  • Pergi ke bagian Koneksi - SSH - Auth dan unduh kunci ppk (File kunci pribadi untuk otentikasi)
  • Klik Buka dan kemudian setuju untuk mempercayai server
  • Jika Anda menentukan frasa sandi saat membuat kunci ppk, masukkan untuk mengonfirmasi entri:

     Using username "ubuntu". Authenticating with public key "imported-openssh-key" Passphrase for key "imported-openssh-key": 

  • Anda berada di server.

    Login server yang berhasil



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 Partition
Misalnya, jika nama drive adalah /dev/sdf (ini mungkin muncul secara berbeda pada instance Anda), gunakan operasi berikut untuk memasang volume di /mnt/tempvol :

  • Tentukan nama partisi drive yang dipetakan:

    [user ~]$ lsblk

     NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 10G 0 disk └─xvda1 202:1 0 10G 0 part / xvdf 202:80 0 10G 0 disk └─xvdf1 202:81 0 10G 0 part 

    /dev/xvda1 dan /dev/xvdf1 adalah partisi disk. /dev/xvdf1 tidak memiliki titik mount (MOUNTPOINT), jadi ini adalah partisi disk yang kami sambungkan sebelumnya.
  • Buat direktori sementara untuk memasang partisi:

    [user ~]$ sudo mkdir /mnt/tempvol
  • Pasang partisi di direktori yang dibuat:

    [user ~]$ sudo mount /dev/ xvdf1 /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 kunci
Misalnya, 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.

    Drive koneksi
    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.

Source: https://habr.com/ru/post/id420297/


All Articles