GNU/Linux >> Belajar Linux >  >> Linux

10 Fitur SSH Teratas yang HARUS Anda Ketahui Agar Lebih Produktif

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!


Linux
  1. Apa Itu Hosting VPS? Yang Perlu Anda Ketahui Tentang Server Pribadi Virtual

  2. 20 Contoh Perintah OpenSSL yang harus anda ketahui

  3. [Linux] :12 fitur keamanan teratas untuk Diaktifkan di server SSH!

  1. Bagaimana Cara Ssh Ke Server Menggunakan Server Lain??

  2. Redhat vs Ubuntu:15 Fakta Mendasar yang Harus Anda Ketahui

  3. Memecahkan masalah SSH

  1. Beberapa Alternatif Untuk Utilitas baris Perintah 'atas' yang Mungkin Ingin Anda Ketahui

  2. Server Ubuntu Yang Perlu Anda Ketahui

  3. Bisakah Anda memiliki lebih dari satu file ~/.ssh/config?