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:
| Opsi | Fungsi |
|---|---|
Host | Nama alias yang akan digunakan saat menjalankan ssh |
HostName | Domain atau alamat IP server tujuan |
User | Username SSH pada server |
Port | Port SSH (default: 22) |
IdentityFile | Lokasi private key yang digunakan |
IdentitiesOnly yes | Memaksa 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
