ADVERTISEMENT

Sering login ke server Linux menggunakan SSH? Jika setiap kali harus mengetik perintah panjang seperti ssh -i ~/.ssh/id_rsa user@ip-server, ada cara yang jauh lebih praktis.

Dengan memanfaatkan file ~/.ssh/config, kita bisa menyimpan konfigurasi koneksi SSH sehingga cukup menjalankan satu perintah sederhana, misalnya ssh webserver. Fitur ini sangat berguna bagi developer, sysadmin, maupun siapa saja yang mengelola banyak server.

Apa Itu File ~/.ssh/config?

File ~/.ssh/config adalah file konfigurasi milik OpenSSH yang digunakan untuk menyimpan pengaturan koneksi ke server tertentu, seperti hostname, username, port, dan private key.

Tanpa konfigurasi:

ssh -i ~/.ssh/id_rsa [email protected]

Dengan konfigurasi:

ssh webserver

Jauh lebih singkat dan mudah diingat.

Membuat File Konfigurasi SSH

File konfigurasi berada di direktori ~/.ssh/. Jika belum ada, buat terlebih dahulu.

mkdir -p ~/.ssh
touch ~/.ssh/config
chmod 600 ~/.ssh/config

Permission 600 penting agar hanya pemilik yang dapat membaca dan menulis file tersebut.

Contoh Konfigurasi

Misalkan kita memiliki server dengan informasi berikut:

  • Host: server-lab
  • IP: 192.168.10.10
  • Username: admin
  • Port: 22
  • Private key: ~/.ssh/id_rsa

Isi file ~/.ssh/config menjadi:

Host webserver
    HostName 192.168.10.10
    User admin
    Port 22
    IdentityFile ~/.ssh/id_rsa
    IdentitiesOnly yes

Penjelasan setiap opsi:

OpsiFungsi
HostNama alias yang akan digunakan saat menjalankan ssh
HostNameDomain atau alamat IP server tujuan
UserUsername SSH pada server
PortPort SSH (default: 22)
IdentityFileLokasi private key yang digunakan
IdentitiesOnly yesMemaksa SSH hanya menggunakan key yang ditentukan

Setelah file disimpan, kita cukup menjalankan:

ssh webserver

Menggunakan Alamat IP Langsung

Jika server berada di jaringan lokal atau lab internal, kita bisa menggunakan alamat IP private secara langsung.

Host webserver
    HostName 192.168.10.10
    User admin
    Port 22
    IdentityFile ~/.ssh/id_rsa
    IdentitiesOnly yes

Cara ini juga berguna ketika DNS internal belum dikonfigurasi.

Membuat SSH Key RSA

Jika belum memiliki SSH key, buat terlebih dahulu menggunakan RSA.

ssh-keygen -t rsa -b 4096

Tekan Enter saat diminta lokasi penyimpanan agar menggunakan default:

~/.ssh/id_rsa

Hasilnya:

  • Private key: ~/.ssh/id_rsa
  • Public key: ~/.ssh/id_rsa.pub

Lihat isi public key:

cat ~/.ssh/id_rsa.pub

Salin isi file tersebut ke server pada file ~/.ssh/authorized_keys.

Permission yang Benar

Permission file SSH sangat penting. Gunakan konfigurasi berikut.

Di sisi client:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/config
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub

Di sisi server:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Permission yang salah sering menyebabkan error Permission denied (publickey).

Menguji Konfigurasi SSH

Jika koneksi gagal, gunakan mode verbose untuk melihat proses SSH secara detail.

ssh -v webserver

Atau lebih lengkap:

ssh -vvv webserver

Output ini akan membantu mendeteksi masalah seperti DNS, firewall, port tertutup, atau public key yang tidak cocok.

Tips Tambahan: Menggunakan Nama Domain

Selain menggunakan alamat IP, file ~/.ssh/config juga mendukung penggunaan nama domain.

Host webserver
    HostName server.internal.example
    User admin
    IdentityFile ~/.ssh/id_rsa

Keuntungan menggunakan domain adalah kita tidak perlu mengubah konfigurasi SSH ketika alamat IP server berubah, selama DNS sudah diperbarui.

Menentukan Port SSH yang Berbeda

Tidak semua server menggunakan port 22. Banyak administrator memindahkan layanan SSH ke port lain, misalnya 2222, untuk mengurangi percobaan login otomatis dari bot.

Contoh konfigurasi:

Host webserver
    HostName 192.168.10.10
    User admin
    Port 2222
    IdentityFile ~/.ssh/id_rsa

Dengan konfigurasi tersebut, perintah ssh webserver akan otomatis menggunakan port 2222.

Menggunakan Beberapa Private Key

Jika setiap server menggunakan private key yang berbeda, kita cukup menentukan IdentityFile pada masing-masing host.

Host webserver
    HostName 192.168.10.10
    User admin
    IdentityFile ~/.ssh/id_rsa

Host gitserver
    HostName 192.168.20.20
    User git
    IdentityFile ~/.ssh/id_git

Pendekatan ini jauh lebih rapi dibandingkan harus menggunakan opsi -i setiap kali menjalankan SSH.

Mengaktifkan Compression

Untuk koneksi yang lambat, kita bisa mengaktifkan kompresi data SSH.

Host webserver
    HostName 192.168.10.10
    User admin
    IdentityFile ~/.ssh/id_rsa
    Compression yes

Fitur ini dapat membantu mempercepat transfer data pada jaringan dengan bandwidth terbatas.

Mengatur KeepAlive Agar Koneksi Tidak Mudah Terputus

Koneksi SSH kadang terputus ketika tidak ada aktivitas selama beberapa menit. Kita bisa menambahkan opsi berikut:

Host webserver
    HostName 192.168.10.10
    User admin
    IdentityFile ~/.ssh/id_rsa
    ServerAliveInterval 60
    ServerAliveCountMax 3

Artinya SSH akan mengirim sinyal keepalive setiap 60 detik dan mencoba hingga 3 kali sebelum memutus koneksi.

Konfigurasi Global

Jika ingin semua koneksi SSH menggunakan pengaturan tertentu, tambahkan blok Host *.

Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3
    Compression yes

Kemudian konfigurasi spesifik server dapat ditambahkan di bawahnya.

Host webserver
    HostName 192.168.10.10
    User admin
    IdentityFile ~/.ssh/id_rsa

Host staging
    HostName 192.168.20.20
    User deploy
    Port 2222
    IdentityFile ~/.ssh/staging_rsa

Host production
    HostName 192.168.30.30
    User ubuntu
    IdentityFile ~/.ssh/prod_rsa

Penggunaannya cukup:

ssh webserver
ssh staging
ssh production

Troubleshooting Singkat

Jika konfigurasi sudah dibuat tetapi masih gagal login, berikut beberapa pengecekan cepat.

Cek Permission File

chmod 700 ~/.ssh
chmod 600 ~/.ssh/config
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub

Pastikan Public Key Sudah Terpasang

Di server:

cat ~/.ssh/authorized_keys

Pastikan isi ~/.ssh/id_rsa.pub dari komputer client sudah ada di file tersebut.

Jalankan SSH dalam Mode Verbose

ssh -vvv webserver

Mode verbose akan menampilkan proses autentikasi secara detail sehingga lebih mudah mengetahui penyebab kegagalan.

File ~/.ssh/config adalah salah satu fitur kecil dari OpenSSH yang memberikan peningkatan produktivitas yang besar. Dengan menyimpan hostname, username, port, dan private key dalam satu file, proses login ke server menjadi jauh lebih cepat, konsisten, dan mudah dikelola.

Bagi developer, DevOps engineer, maupun system administrator yang setiap hari berpindah antar server, meluangkan beberapa menit untuk mengatur ~/.ssh/config akan menghemat banyak waktu dalam jangka panjang. Cukup satu perintah seperti ssh webserver, dan koneksi ke server sudah siap digunakan tanpa perlu mengingat detail konfigurasi setiap kali login.

ADVERTISEMENT