Artikel ini melanjutkan seri artikel Linux kami dan mencakup banyak fitur dan trik SSH yang berguna untuk meningkatkan produktivitas harian Anda. Visual kami akan membantu Anda memahami pengaturan SSH, manajemen file konfigurasi, otentikasi, bekerja dengan beberapa kunci SSH, dan tentu saja, penerusan port lokal dan jarak jauh SSH. Menjadi master SSH dalam 10 menit!
Apa itu SSH
Secure Shell, atau SSH, adalah protokol jaringan yang memungkinkan Anda terhubung dengan aman ke server jarak jauh dan menggunakan antarmuka konsol untuk mengelolanya.
Saat Anda membuat koneksi SSH, server memulai sesi shell untuk Anda. Setelah itu, Anda dapat mengetikkan perintah di klien SSH Anda, dan perintah tersebut akan dijalankan di server jauh.
Administrator sistem menggunakan protokol ini untuk menghubungkan dan mengelola server Linux jarak jauh dengan aman.
Bagaimana SSH Bekerja
Seperti aplikasi jaringan lainnya, SSH menggunakan dua komponen:
- Klien SSH adalah aplikasi yang Anda instal di komputer yang akan Anda gunakan untuk terhubung ke jaringan komputer berbasis Linux. Klien SSH membuat koneksi terenkripsi antara komputer Anda dan server jauh.
- Server SSH adalah aplikasi server yang mendengarkan TCP/IP port 22 untuk koneksi klien. Jika klien memberikan kredensial yang benar, server SSH membuat sesi pengguna baru dan memungkinkan Anda untuk menjalankan perintah jarak jauh.
Otentikasi SSH
SSH memungkinkan Anda untuk menggunakan beberapa metode otentikasi yang berbeda. Yang paling banyak digunakan adalah:
- Otentikasi Sandi – Anda dimintai nama pengguna dan sandi untuk mendapatkan akses ke host jarak jauh.
- Otentikasi Berbasis Kunci SSH – Anda menggunakan kunci Publik dan Pribadi SSH untuk autentikasi pengguna.
Otentikasi Berbasis Kunci SSH
Metode otentikasi ini dianggap lebih aman daripada menggunakan kata sandi. Begini cara kerjanya:
Algoritma Otentikasi Berbasis Kunci SSH:
- Klien memulai koneksi SSH.
- Server mengirimkan pesan acak kembali.
- Klien mengenkripsi pesan yang diterima menggunakan kunci SSH pribadi dan mengirimkannya kembali ke server.
- Server mendekripsi pesan klien menggunakan kunci SSH publik . Jika pesannya sama, server memberikan akses.
Menggunakan otentikasi kata sandi di SSH tidak aman. Jika Anda masih menggunakan autentikasi kata sandi, Anda perlu mengubahnya ke SSH Key-Based Authentication ASAP.
Cara Memasang Klien SSH
Di sebagian besar sistem Linux dan macOS, server SSH sudah terinstal tersedia untuk Anda secara default. Tetapi jika Anda bermain dengan Linux di mesin virtual Anda, Anda mungkin perlu menginstalnya.
Ubuntu
Untuk distribusi Linux berbasis deb, Anda dapat menginstal klien SSH menggunakan perintah berikut:
sudo apt-get update
sudo apt-get -y install openssh-client
CentOS, Fedora, RedHat
Untuk distribusi Linux berbasis yum, Anda dapat menginstal klien SSH menggunakan perintah berikut:
sudo yum -y install openssh-clients
sudo systemctl enable sshd
sudo systemctl start sshd
Windows
Untuk sistem operasi Windows, PuTTY menjadi klien SSH de-facto standar. Untuk menginstalnya, download installer MSI dari link di atas dan ikuti petunjuk dari Cara Memasang Putty di Windows.
Berikut cara otomatis menggunakan Chocolatey. Buka konsol PowerShell dalam mode “Run as Administrator”) dan jalankan perintah berikut:
Set-ExecutionPolicy RemoteSigned
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
choco install putty -y
Cara Memasang Server SSH
Di sebagian besar sistem Linux dan macOS, klien SSH sudah diinstal, tersedia untuk Anda secara default. Tetapi jika Anda bermain dengan Linux di mesin virtual Anda, Anda mungkin perlu menginstalnya.
Server SSH – Ubuntu
Untuk distribusi Linux berbasis deb, Anda dapat menginstal klien SSH menggunakan perintah berikut:
sudo apt-get update
sudo apt-get -y install openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd
Server SSH – CentOS, Fedora, RedHat
Untuk distribusi Linux berbasis yum, Anda dapat menginstal klien SSH menggunakan perintah berikut:
sudo yum -y install openssh
sudo systemctl enable sshd
sudo systemctl start sshd
Server SSH – Windows
Server SSH tidak dapat diinstal pada Windows. Di dunia Windows, Anda perlu menggunakan Desktop Jarak Jauh dan WinRM untuk mengontrol server Windows jarak jauh.
Buat Kunci SSH
Segera setelah memiliki klien SSH, Anda dapat membuat kunci SSH pribadi dan publik yang digunakan untuk Autentikasi Berbasis Kunci SSH. Untuk membuat kunci SSH, jalankan perintah berikut di terminal:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Perintah ini akan membuat keypair RSA 4 Kb:
~/.ssh/id_rsa
– Kunci Pribadi SSH.~/.ssh/id_rsa.pub
– Kunci Publik SSH.
Penting: File Kunci Pribadi SSH tidak boleh ditampilkan atau dikirim ke siapa pun.
Menyiapkan Otentikasi Berbasis Kunci SSH
Untuk menyiapkan Otentikasi Berbasis Kunci SSH di server, Anda harus menyelesaikan langkah-langkah berikut:
- Masuk ke server.
- Buka direktori home pengguna.
- Edit file ~/.ssh/authorized_keys dan tempel konten kunci publik file di sana.
- Simpan perubahan.
~/.ssh/authorized_keys mungkin berisi catatan file kunci publik sebanyak yang Anda butuhkan. Jadi, banyak orang yang berbeda dapat terhubung ke server menggunakan nama login yang sama tetapi file kunci pribadi mereka.
Cara Menghubungkan Menggunakan SSH
Anda dapat terhubung ke server Linux jarak jauh menggunakan klien SSH dengan mengetikkan perintah berikut:
ssh remote_username@host_ip_address
Gunakan Kunci SSH Berbeda Untuk Server Berbeda
Ini adalah situasi yang tersebar luas ketika Anda mungkin perlu menggunakan file kunci SSH pribadi yang berbeda untuk mengakses server yang berbeda. Ada beberapa cara untuk melakukannya.
Tentukan Kunci SSH Dalam Perintah Koneksi
Untuk menentukan kunci pribadi yang diperlukan sebagai bagian dari perintah koneksi SSH, gunakan -i
bendera:
ssh -i ~/.ssh/another_private_key remote_username@host_ip_address
Gunakan Agen SSH
Jika Anda tidak memiliki terlalu banyak kunci pribadi, Anda dapat menggunakan Agen SSH.
SSH Agent adalah program, yang memuat kunci SSH pribadi Anda di memori dan menggunakannya untuk meneruskan otentikasi SSH.
Linux
Mulai ssh-agent di latar belakang:
eval "$(ssh-agent -s)"
Untuk menambahkan kunci SSH Anda ke agen, gunakan perintah berikut:
ssh-add -K ~/.ssh/id_rsa
ssh-add -K ~/.ssh/another_private_key
Windows
Distribusi Putty berisi Pagent, yang berada di baki sistem dan memainkan peran yang sama. Klik kanan pada Pagent dan tambahkan kunci SSH Anda.
Sekarang, klien SSH akan menggunakan semua kunci pribadi yang dimuat satu per satu untuk melewati otentikasi selama koneksi SSH.
File Konfigurasi SSH
Cara lain yang berguna untuk mengonfigurasi parameter klien SSH adalah melalui ~/.ssh/config
berkas.
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
Host exceptional.com
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/another_private_key
Pada contoh di atas, kami menggunakan default ~/.ssh/id_rsa
file kunci pribadi untuk semua server, kecuali exceptional.com
server. Untuk exceptional.com
server, kami akan menggunakan ~/.ssh/another_private_key
berkas.
Agen SSH dan Penerusan Kunci
Fitur SSH favorit lainnya yang saya gunakan setiap hari adalah penerusan kunci SSH. Ini memungkinkan Anda menggunakan kunci SSH lokal untuk terhubung ke server yang berbeda.
Anda dapat mengaktifkan penerusan kunci SSH selama eksekusi klien SSH dengan menentukan -T
bendera:
ssh -T remote_username@host_ip_address
Atau Anda dapat mengaktifkan konfigurasi ini secara permanen di ~/.ssh/config
file dengan menentukan ForwardAgent yes
:
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
ForwardAgent yes
Penerusan Port SSH
Protokol SSH memungkinkan Anda meneruskan tidak hanya komunikasi Agen SSH melalui saluran SSH yang aman, tetapi juga lalu lintas TCP apa pun.
Jika Anda perlu meneruskan traffic UDP, gunakan nc
dalam kombinasi dengan SSH.
Ada dua jenis opsi penerusan port.
Penerusan Port Lokal
Cara terbaik untuk menjelaskan penerusan port lokal SSH adalah dengan melihat diagram berikut.
Dalam diagram ini, Langsung Host server memiliki konektivitas pribadi ke server PostgreSQL Amazon RDS.
Klien laptop dapat terhubung ke server Jump Host menggunakan protokol SSH.
Pemilik klien laptop sedang mencari cara untuk terhubung ke instance Amazon RDS .
Fitur penerusan port lokal SSH memungkinkan pengikatan port pada klien laptop. Lalu lintas dari port terikat diteruskan melalui Lompat Host server ke instance Amazon RDS .
Akibatnya, Anda harus terhubung ke instance RDS dari klien laptop, Anda perlu mengonfigurasi pgsql
di laptop untuk terhubung ke localhost:15432
.
Inilah cara Anda perlu membuat koneksi SSH ke Jump Host dari Linux atau macOS klien laptop:
ssh -L 127.0.0.1:15432:rds-endpoint-url:5432 ec2-user@jump_host_ip
Jika Anda menggunakan Putty, Anda perlu membuat perubahan di Koneksi – SSH – Terowongan sebelum terhubung ke Jump Host.
Penerusan Port Jarak Jauh
Penerusan port jarak jauh SSH adalah fitur yang sedikit lebih menarik yang memecahkan masalah sebaliknya. Ini memungkinkan Anda untuk mengikat port pada server ssh jarak jauh dan meneruskan lalu lintas yang datang ke port tersebut ke jaringan di belakang host klien SSH.
Ini contohnya.
Dalam contoh kami, kami memiliki Server Terisolasi , yang tidak memiliki akses ke internet, dan klien laptop, yang kami gunakan untuk terhubung ke Jump Host .
Lalu lintas antara Langsung Host dan Server Terisolasi tidak dibatasi.
Kami harus mengizinkan Server Terisolasi untuk terhubung ke internet. Bagaimana kita bisa melakukannya?
Misalnya, kita dapat meluncurkan wadah Docker dengan proxy Squid di laptop klien pada port 8080. Kemudian kita dapat terhubung ke Jump Host menggunakan SSH. Fitur penerusan port jarak jauh adalah untuk mengikat port 8081
di Langsung Host untuk meneruskan lalu lintas ke klien port laptop 8080
.
Akibatnya, Server Terisolasi akan dapat menggunakan http://jump_host_ip:8081
sebagai server proxy.
Untuk mengaktifkan penerusan port jarak jauh selama koneksi SSH di Linux atau macOS:
ssh -R 8081:localhost:8080 ec2-user@jump_host_ip
Untuk host Putty dan Windows:
Ringkasan
Dalam artikel ini, saya membahas banyak fitur SSH yang berguna, yang saya gunakan dalam pekerjaan sehari-hari. Saya harap Anda akan mulai menggunakannya juga. Jika ada yang kurang jelas, silakan hubungi saya di bagian komentar di bawah. Saya akan dengan senang hati membantu.
Jika Anda merasa artikel ini bermanfaat, jangan ragu untuk membantu saya menyebarkannya ke seluruh dunia!