

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Akses host bastion menggunakan Session Manager dan Amazon EC2 Instance Connect
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect"></a>

*Piotr Chotkowski dan Witold Kowalik, Amazon Web Services*

## Ringkasan
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-summary"></a>

Sebuah *bastion host*, kadang-kadang disebut *jump box*, adalah server yang menyediakan satu titik akses dari jaringan eksternal ke sumber daya yang terletak di jaringan pribadi. Server yang terpapar ke jaringan publik eksternal, seperti internet, menimbulkan risiko keamanan potensial untuk akses yang tidak sah. Sangat penting untuk mengamankan dan mengontrol akses ke server ini.

Pola ini menjelaskan cara Anda dapat menggunakan [Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html) dan [Amazon EC2 Instance Connect untuk terhubung](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Connect-using-EC2-Instance-Connect.html) dengan aman ke host bastion Amazon Elastic Compute Cloud EC2 (Amazon) yang digunakan di host Anda. Akun AWS Session Manager adalah kemampuan AWS Systems Manager. Manfaat dari pola ini meliputi:
+ Host benteng yang dikerahkan tidak memiliki port terbuka dan masuk yang terpapar ke internet publik. Ini mengurangi permukaan serangan potensial.
+ Anda tidak perlu menyimpan dan memelihara kunci Secure Shell (SSH) jangka panjang di dalam. Akun AWS Sebagai gantinya, setiap pengguna menghasilkan key pair SSH baru setiap kali mereka terhubung ke host bastion. AWS Identity and Access Management (IAM) kebijakan yang dilampirkan pada AWS kredensyal pengguna mengontrol akses ke host bastion.

**Audiens yang dituju**

Pola ini ditujukan untuk pembaca yang memiliki pengalaman dengan pemahaman dasar tentang Amazon EC2, Amazon Virtual Private Cloud (Amazon VPC), dan Hashicorp Terraform.

## Prasyarat dan batasan
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-prereqs"></a>

**Prasyarat**
+ Aktif Akun AWS
+ AWS Command Line Interface (AWS CLI) versi 2, [diinstal](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) dan [dikonfigurasi](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)
+ Plugin Session Manager untuk AWS CLI, [diinstal](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html)
+ [Terraform CLI, diinstal](https://developer.hashicorp.com/terraform/cli)
+ Penyimpanan untuk [status](https://developer.hashicorp.com/terraform/language/state) Terraform, seperti bucket Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3) dan tabel Amazon DynamoDB yang berfungsi sebagai backend jarak jauh untuk menyimpan status Terraform. [Untuk informasi selengkapnya tentang penggunaan backend jarak jauh untuk status Terraform, lihat Backend Amazon S3 (dokumentasi Terraform).](https://www.terraform.io/language/settings/backends/s3) Untuk contoh kode yang menyiapkan manajemen status jarak jauh dengan backend Amazon S3, lihat [remote-state-s3-backend](https://registry.terraform.io/modules/nozaq/remote-state-s3-backend/aws/latest) (Terraform Registry). Perhatikan persyaratan berikut:
  + Bucket Amazon S3 dan tabel DynamoDB harus sama. Wilayah AWS
  + Saat membuat tabel DynamoDB, kunci partisi `LockID` harus (peka huruf besar/kecil), dan tipe kunci partisi harus. `String` Semua pengaturan tabel lainnya harus pada nilai default mereka. Untuk informasi selengkapnya, lihat [Tentang kunci utama](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.CoreComponents.html#HowItWorks.CoreComponents.PrimaryKey) dan [Membuat tabel di dokumentasi](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/getting-started-step-1.html) DynamoDB.
+ Klien SSH, diinstal

**Batasan**
+ Pola ini dimaksudkan sebagai bukti konsep (PoC) atau sebagai dasar untuk pengembangan lebih lanjut. Seharusnya tidak digunakan dalam bentuknya saat ini di lingkungan produksi. Sebelum penerapan, sesuaikan kode sampel di repositori untuk memenuhi persyaratan dan kasus penggunaan Anda.
+ Pola ini mengasumsikan bahwa target bastion host menggunakan Amazon Linux 2 sebagai sistem operasinya. Meskipun dimungkinkan untuk menggunakan Amazon Machine Images (AMIs) lainnya, sistem operasi lain berada di luar cakupan untuk pola ini.
**catatan**  
Amazon Linux 2 mendekati akhir dukungan. Untuk informasi selengkapnya, lihat [Amazon Linux 2 FAQs](https://aws.amazon.com/amazon-linux-2/faqs/).
+ Dalam pola ini, host benteng terletak di subnet pribadi tanpa gateway NAT dan gateway internet. Desain ini mengisolasi EC2 instance Amazon dari internet publik. Anda dapat menambahkan konfigurasi jaringan tertentu yang memungkinkannya berkomunikasi dengan internet. Untuk informasi selengkapnya, lihat [Connect virtual private cloud (VPC) Anda ke jaringan lain](https://docs.aws.amazon.com/vpc/latest/userguide/extend-intro.html) dalam dokumentasi Amazon VPC. Demikian pula, mengikuti [prinsip hak istimewa terkecil](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege), host bastion tidak memiliki akses ke sumber daya lain di Anda Akun AWS kecuali Anda secara eksplisit memberikan izin. Untuk informasi selengkapnya, lihat [Kebijakan berbasis sumber daya](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_resource-based) dalam dokumentasi IAM.

**Versi produk**
+ AWS CLI versi 2
+ Terraform versi 1.3.9

## Arsitektur
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-architecture"></a>

**Tumpukan teknologi target**
+ VPC dengan subnet pribadi tunggal
+ [Antarmuka berikut titik akhir VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html):
  + `amazonaws.<region>.ssm`— Titik akhir untuk AWS Systems Manager layanan.
  + `amazonaws.<region>.ec2messages`— Systems Manager menggunakan endpoint ini untuk melakukan panggilan dari Agen SSM ke layanan Systems Manager.
  + `amazonaws.<region>.ssmmessages`— Session Manager menggunakan endpoint ini untuk terhubung ke EC2 instans Amazon Anda melalui saluran data yang aman.
+  EC2 Instans `t3.nano` Amazon yang menjalankan Amazon Linux 2
+ Peran IAM dan profil contoh
+ Grup keamanan Amazon VPC dan aturan grup keamanan untuk titik akhir dan instans Amazon EC2 

**Arsitektur target**

![\[Diagram arsitektur menggunakan Session Manager untuk mengakses host bastion.\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/a02aed20-1852-4c91-902f-f553795006e2/images/819c503b-7eec-4a9c-862b-b87107d50dc1.png)


Diagram menunjukkan proses berikut:

1. Pengguna mengasumsikan peran IAM yang memiliki izin untuk melakukan hal berikut:
   + Mengautentikasi, mengotorisasi, dan menghubungkan ke instans Amazon EC2 
   + Memulai sesi dengan Manajer Sesi

1. Pengguna memulai sesi SSH melalui Session Manager.

1. Session Manager mengautentikasi pengguna, memverifikasi izin dalam kebijakan IAM terkait, memeriksa pengaturan konfigurasi, dan mengirim pesan ke Agen SSM untuk membuka koneksi dua arah.

1. Pengguna mendorong kunci publik SSH ke host benteng melalui metadata Amazon. EC2 Ini harus dilakukan sebelum setiap koneksi. Kunci publik SSH tetap tersedia selama 60 detik.

1. Host benteng berkomunikasi dengan titik akhir VPC antarmuka untuk Systems Manager dan Amazon. EC2

1. Pengguna mengakses host bastion melalui Session Manager dengan menggunakan saluran komunikasi dua arah terenkripsi TLS 1.2.

**Otomatisasi dan skala**

Opsi berikut tersedia untuk mengotomatiskan penerapan atau untuk menskalakan arsitektur ini:
+ Anda dapat menerapkan arsitektur melalui pipeline continuous integration dan continuous delivery (CI/CD).
+ Anda dapat memodifikasi kode untuk mengubah jenis instance dari host bastion.
+ Anda dapat memodifikasi kode untuk menyebarkan beberapa host bastion. Dalam `bastion-host/main.tf` file, di blok `aws_instance` sumber daya, tambahkan `count` meta-argumen. Untuk informasi selengkapnya, lihat dokumentasi [Terraform](https://developer.hashicorp.com/terraform/language/meta-arguments/count).

## Alat
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-tools"></a>

**Layanan AWS**
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) adalah alat open source yang membantu Anda berinteraksi Layanan AWS melalui perintah di shell baris perintah Anda.
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/) menyediakan kapasitas komputasi yang dapat diskalakan di. AWS Cloud Anda dapat meluncurkan server virtual sebanyak yang Anda butuhkan dan dengan cepat meningkatkannya ke atas atau ke bawah.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) membantu Anda mengelola akses ke AWS sumber daya dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.
+ [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html)membantu Anda mengelola aplikasi dan infrastruktur yang berjalan di AWS Cloud. Ini menyederhanakan aplikasi dan manajemen sumber daya, mempersingkat waktu untuk mendeteksi dan menyelesaikan masalah operasional, dan membantu Anda mengelola AWS sumber daya Anda dengan aman dalam skala besar. Pola ini menggunakan [Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html), kemampuan Systems Manager.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) membantu Anda meluncurkan AWS sumber daya ke jaringan virtual yang telah Anda tentukan. Jaringan virtual ini menyerupai jaringan tradisional yang akan Anda operasikan di pusat data Anda sendiri, dengan manfaat menggunakan infrastruktur yang dapat diskalakan. AWS

**Alat lainnya**
+ [HashiCorp Terraform](https://www.terraform.io/docs) adalah alat infrastruktur sebagai kode (IAc) yang membantu Anda menggunakan kode untuk menyediakan dan mengelola infrastruktur dan sumber daya cloud. Pola ini menggunakan [Terraform CLI](https://developer.hashicorp.com/terraform/cli).

**Repositori kode**

Kode untuk pola ini tersedia di [host GitHub Access a bastion dengan menggunakan Session Manager dan Amazon EC2 Instance Connect](https://github.com/aws-samples/secured-bastion-host-terraform) repositori.

## Praktik terbaik
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-best-practices"></a>
+ Sebaiknya gunakan alat pemindaian kode otomatis untuk meningkatkan keamanan dan kualitas kode. Pola ini dipindai dengan menggunakan [Checkov](https://www.checkov.io/), alat analisis kode statis untuk IAc. Minimal, kami menyarankan Anda melakukan pemeriksaan validasi dan pemformatan dasar dengan menggunakan perintah `terraform validate` dan `terraform fmt -check -recursive` Terraform.
+ Ini adalah praktik yang baik untuk menambahkan tes otomatis untuk IAc. Untuk informasi lebih lanjut tentang berbagai pendekatan untuk menguji kode Terraform, lihat [Menguji HashiCorp Terraform (posting blog Terraform](https://www.hashicorp.com/blog/testing-hashicorp-terraform)).
+ Selama penerapan, Terraform menggunakan instans pengganti EC2 Amazon setiap kali versi baru [AMI Amazon Linux 2 terdeteksi](https://aws.amazon.com/marketplace/pp/prodview-zc4x2k7vt6rpu?sr=0-1&ref_=beagle&applicationId=AWSMPContessa). Ini menyebarkan versi baru dari sistem operasi, termasuk tambalan dan peningkatan. Jika jadwal penerapan jarang terjadi, ini dapat menimbulkan risiko keamanan karena instance tidak memiliki tambalan terbaru. Penting untuk sering memperbarui dan menerapkan tambalan keamanan ke instans Amazon EC2 yang diterapkan. Untuk informasi selengkapnya, lihat [Memperbarui manajemen di Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/update-management.html).
+ Karena pola ini adalah bukti konsep, ia menggunakan kebijakan AWS terkelola, seperti`AmazonSSMManagedInstanceCore`. AWS kebijakan terkelola mencakup kasus penggunaan umum tetapi tidak memberikan izin hak istimewa paling sedikit. Jika diperlukan untuk kasus penggunaan Anda, sebaiknya Anda membuat kebijakan khusus yang memberikan izin hak istimewa paling sedikit untuk sumber daya yang digunakan dalam arsitektur ini. Untuk informasi selengkapnya, lihat [Memulai kebijakan AWS terkelola dan beralih ke izin hak istimewa paling sedikit.](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-use-aws-defined-policies)
+ Gunakan kata sandi untuk melindungi akses ke kunci SSH dan menyimpan kunci di lokasi yang aman.
+ Siapkan logging dan monitoring untuk host bastion. Pencatatan dan pemantauan adalah bagian penting dari pemeliharaan sistem, baik dari perspektif operasional maupun keamanan. Ada beberapa cara untuk memantau koneksi dan aktivitas di host bastion Anda. Untuk informasi selengkapnya, lihat topik berikut dalam dokumentasi Systems Manager:
  + [Pemantauan AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/monitoring.html)
  + [Penebangan dan pemantauan di AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/logging-and-monitoring.html)
  + [Aktivitas sesi audit](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-auditing.html)
  + [Aktivitas sesi logging](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-logging.html)

## Epik
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-epics"></a>

### Menyebarkan sumber daya
<a name="deploy-the-resources"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Kloning repositori kode. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html) | DevOps insinyur, Pengembang | 
| Inisialisasi direktori kerja Terraform. | Langkah ini diperlukan hanya untuk penerapan pertama. Jika Anda menerapkan kembali pola, lompat ke langkah berikutnya.Di direktori root repositori kloning, masukkan perintah berikut, di mana:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html)<pre>terraform init \<br />    -backend-config="bucket=$S3_STATE_BUCKET" \<br />    -backend-config="key=$PATH_TO_STATE_FILE" \<br />    -backend-config="region=$AWS_REGION</pre>Atau, Anda dapat membuka file **config.tf** dan, di `terraform` bagian tersebut, memberikan nilai-nilai ini secara manual. | DevOps insinyur, Pengembang, Terraform | 
| Menyebarkan sumber daya. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html) | DevOps insinyur, Pengembang, Terraform | 

### Mengatur lingkungan lokal
<a name="set-up-the-local-environment"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Konfigurasikan koneksi SSH. | Perbarui file konfigurasi SSH untuk memungkinkan koneksi SSH melalui Session Manager. Untuk petunjuk, lihat [Mengizinkan koneksi SSH untuk Pengelola Sesi](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started-enable-ssh-connections.html#ssh-connections-enable). Hal ini memungkinkan pengguna yang berwenang untuk memasukkan perintah proxy yang memulai sesi Session Manager dan mentransfer semua data melalui koneksi dua arah. | DevOps insinyur | 
| Hasilkan kunci SSH. | Masukkan perintah berikut untuk menghasilkan private dan public SSH key pair lokal. Anda menggunakan key pair ini untuk terhubung ke host bastion.<pre>ssh-keygen -t rsa -f my_key</pre> | DevOps insinyur, Pengembang | 

### Connect ke host bastion dengan menggunakan Session Manager
<a name="connect-to-the-bastion-host-by-using-sesh"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Dapatkan ID instance. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html) | AWS Umum | 
| Kirim kunci publik SSH. | Di bagian ini, Anda mengunggah kunci publik ke [metadata instance dari host](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) bastion. Setelah kunci diunggah, Anda memiliki 60 detik untuk memulai koneksi dengan host bastion. Setelah 60 detik, kunci publik dihapus. Untuk informasi selengkapnya, lihat bagian [Pemecahan Masalah](#access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-troubleshooting) dari pola ini. Selesaikan langkah selanjutnya dengan cepat untuk mencegah kunci dihapus sebelum Anda terhubung ke host bastion.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html) | AWS Umum | 
| Connect ke host bastion. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html)Ada opsi lain untuk membuka koneksi SSH dengan host bastion. Untuk informasi lebih lanjut, lihat *Pendekatan alternatif untuk membuat koneksi SSH dengan host bastion* di bagian [Informasi tambahan](#access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-additional) dari pola ini. | AWS Umum | 

### (Opsional) Bersihkan
<a name="optional-clean-up"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Hapus sumber daya yang digunakan. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html) | DevOps insinyur, Pengembang, Terraform | 

## Pemecahan masalah
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-troubleshooting"></a>


| Isu | Solusi | 
| --- | --- | 
| `TargetNotConnected`kesalahan saat mencoba terhubung ke host bastion | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html) | 
| `Permission denied`kesalahan saat mencoba terhubung ke host bastion | Setelah kunci publik diunggah ke host bastion, Anda hanya memiliki 60 detik untuk memulai koneksi. Setelah 60 detik, kunci secara otomatis dihapus, dan Anda tidak dapat menggunakannya untuk terhubung ke instance. Jika ini terjadi, Anda dapat mengulangi langkah untuk mengirim ulang kunci ke instance. | 

## Sumber daya terkait
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-resources"></a>

**AWS dokumentasi**
+ [AWS Systems Manager Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html)(Dokumentasi Systems Manager)
+ [Instal plugin Session Manager untuk](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html) dokumentasi AWS CLI(Systems Manager)
+ [Mengizinkan koneksi SSH untuk Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started-enable-ssh-connections.html#ssh-connections-enable) (dokumentasi Systems Manager)
+ [Tentang menggunakan EC2 Instance Connect](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Connect-using-EC2-Instance-Connect.html) ( EC2 dokumentasi Amazon)
+ [Connect menggunakan EC2 Instance Connect](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-connect-methods.html) ( EC2 dokumentasi Amazon)
+ [Manajemen identitas dan akses untuk Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-iam.html) ( EC2 dokumentasi Amazon)
+ [Menggunakan peran IAM untuk memberikan izin ke aplikasi yang berjalan di EC2 instans Amazon](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html) (dokumentasi IAM)
+ [Praktik terbaik keamanan dalam IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) (dokumentasi IAM)
+ [Kontrol lalu lintas ke sumber daya menggunakan grup keamanan](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html) (dokumentasi Amazon VPC)

**Sumber daya lainnya**
+ [Halaman web Pengembang Terraform](https://developer.hashicorp.com/terraform)
+ [Perintah: memvalidasi](https://developer.hashicorp.com/terraform/cli/commands/validate) (dokumentasi Terraform)
+ [Perintah: fmt (dokumentasi](https://developer.hashicorp.com/terraform/cli/commands/fmt) Terraform)
+ [Menguji HashiCorp Terraform](https://www.hashicorp.com/blog/testing-hashicorp-terraform) (HashiCorp posting blog)
+ [Halaman web Checkov](https://www.checkov.io/)

## Informasi tambahan
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-additional"></a>

**Pendekatan alternatif untuk membangun koneksi SSH dengan host bastion**

*Penerusan port*

Anda dapat menggunakan `-D 8888` opsi untuk membuka koneksi SSH dengan penerusan port dinamis. Untuk informasi lebih lanjut, lihat [petunjuk](https://explainshell.com/explain?cmd=ssh+-i+%24PRIVATE_KEY_FILE+-D+8888+ec2-user%40%24INSTANCE_ID) di explainshell.com. Berikut ini adalah contoh perintah untuk membuka koneksi SSH dengan menggunakan port forwarding.

```
ssh -i $PRIVATE_KEY_FILE -D 8888 ec2-user@$INSTANCE_ID
```

Ini adalah jenis koneksi membuka proxy SOCKS yang dapat meneruskan lalu lintas dari browser lokal Anda melalui host bastion. Jika Anda menggunakan Linux atau macOS, untuk melihat semua opsi, masukkan. `man ssh` Ini menampilkan manual referensi SSH.

*Menggunakan skrip yang disediakan*

Alih-alih menjalankan langkah-langkah yang dijelaskan di *Connect to the bastion host secara manual dengan menggunakan Session Manager* di bagian [Epics](#access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-epics), Anda dapat menggunakan skrip **connect.sh** yang disertakan dalam repositori kode. Skrip ini menghasilkan key pair SSH, mendorong kunci publik ke EC2 instance Amazon, dan memulai koneksi dengan host bastion. Saat Anda menjalankan skrip, Anda meneruskan tag dan nama kunci sebagai argumen. Berikut ini adalah contoh dari perintah untuk menjalankan script.

```
./connect.sh sandbox-dev-bastion-host my_key
```