Jika Anda secara teratur terhubung ke beberapa remote sistem melalui SSH setiap hari, Anda akan menemukan bahwa mengingat semua alamat IP jarak jauh, nama pengguna yang berbeda, port non standar dan berbagai opsi baris perintah sulit, jika bukan tidak mungkin.

Salah satu opsi adalah membuat alias bash untuk setiap koneksi remote server. Namun, ada solusi lain, jauh lebih baik dan lebih sederhana untuk masalah ini. OpenSSH memungkinkan Anda untuk mengatur file konfigurasi per user di mana Anda dapat menyimpan opsi SSH yang berbeda untuk setiap remote server.

Panduan ini mencakup dasar-dasar file konfigurasi klien SSH dan menjelaskan beberapa opsi konfigurasi yang paling umum.

Prasyarat

Kami berasumsi bahwa Anda menggunakan sistem Linux atau macOS dengan klien OpenSSH terinstal pada sistem Anda.

Lokasi File Konfigurasi SSH

File konfigurasi sisi klien OpenSSH bernama config dan disimpan dalam direktori .ssh di bawah direktori home pengguna. Direktori ~/.ssh secara otomatis dibuat ketika pengguna menjalankan perintah ssh untuk pertama kalinya.

Jika belum pernah menggunakan perintah ssh, Anda harus membuat direktori menggunakan perintah mkdir berikut :

mkdir -p ~/.ssh && chmod 700 ~/.ssh

Secara default file konfigurasi SSH mungkin tidak ada, sehingga Anda mungkin perlu membuatnya menggunakan perintah touch:

touch ~/.ssh/config && chmod 600 ~/.ssh/config

File ini harus dapat dibaca dan hanya dapat ditulis oleh user, dan tidak dapat diakses oleh orang lain, maka gunakan perintah chmod untuk mengatur izin file :

chmod 700 ~/.ssh/config

Struktur dan Pola File Konfigurasi SSH

File Konfigurasi SSH menggunakan struktur sebagai berikut:

Host hostname1
    SSH_OPTION value
    SSH_OPTION value

Host hostname2
    SSH_OPTION value

Host *
    SSH_OPTION value

Isi file konfigurasi klien SSH diatur ke dalam setiap sections (bagian). Setiap bagian dimulai dengan arahan Host dan berisi opsi SSH spesifik yang digunakan ketika membuat koneksi dengan remote SSH server.

Indentation memang tidak diperlukan, tetapi disarankan karena akan membuat file lebih mudah dibaca.

Instruksi Host dapat berisi satu pola atau daftar pola yang dipisahkan oleh spasi. Setiap pola dapat berisi nol atau lebih karakter non spasi atau salah satu dari penentu pola berikut:

  • * – cocok dengan nol atau lebih karakter. Misalnya, Host * akan cocok dengan semua host, sementara 192.168.0.* Akan cocok dengan semua host di subnet 192.168.0.0/24.
  • ? – Cocok dengan satu karakter. Polanya, Host 10.10.0.? akan cocok dengan semua host di kisaran 10.10.0.[0-9].
  • ! – pada awal pola akan meniadakan kecocokannya Sebagai contoh, Host 10.10.0.* !10.10.0.5 akan cocok dengan semua host di subnet 10.10.0.0/24 kecuali 10.10.0.5.

SSH client membaca file konfigurasi bagian demi bagian dan jika lebih dari satu pola yang cocok, opsi dari bagian pertama yang cocok lebih diutamakan. Oleh karena itu deklarasi khusus host harus diberikan pada awal file, dan konfigurasi yang lebih umum ditempatkan pada akhir file.

Anda dapat menemukan daftar lengkap opsi ssh yang tersedia dengan mengetikkan man ssh_config di terminal atau dengan mengunjungi halaman manual ssh_config.

File konfigurasi SSH juga dibaca oleh program lain seperti scp, sftp dan rsync.

Contoh File Konfigurasi SSH Dasar

Sekarang kita telah membahas dasar file konfigurasi SSH, mari kita lihat contoh berikut.

Biasanya, ketika terhubung ke remote server melalui SSH, Anda akan menentukan nama user, hostname dan port jarak jauh. Misalnya, untuk terhubung sebagai pengguna bernama dodo ke host yang bernama dev.example.com pada port 2322 dari baris perintah, Anda dapat mengetik perintah berikut :

ssh [email protected] -p 2322

Jika Anda ingin terhubung ke server menggunakan opsi yang sama seperti yang disediakan dalam perintah di atas hanya dengan mengetikkan ssh dev Anda harus meletakkan baris berikut ke file ~/.ssh/config :

sudo nano ~/.ssh/config
Host dev
    HostName dev.example.com
    User dodo
    Port 2322

Sekarang jika mengetik:

ssh dev

ssh client akan membaca file konfigurasi dan akan menggunakan detail koneksi yang ditentukan untuk host dev.

Contoh File Konfigurasi SSH

Contoh ini memberikan informasi lebih rinci tentang pola host dan opsi prioritas.

Mari kita ambil contoh file berikut:

Host jakarta
    HostName 192.168.1.10
    User wijaya
    Port 7654
    IdentityFile ~/.ssh/indonesia.key

Host malang
    HostName 192.168.10.20

Host magelang
    HostName 192.168.10.50

Host *lang
    user rahmat

Host * !magelang
    LogLevel INFO

Host *
    User root
    Compression yes
  • Jika Anda mengetik ssh jakarta, ssh client akan membaca file konfigurasi dan akan menerapkan opsi dari pencocokan pertama yaitu Host jakarta. Kemudian ssh client akan memeriksa seksi config satu per satu untuk pola yang cocok. Yang cocok berikutnya adalah Host * !magelang yang berarti semua host kecuali magelang dan itu akan menerapkan opsi koneksi dari seksi ini. Terakhir, definisi Host * juga cocok, tetapi ssh client hanya akan mengambil opsi Kompresi, karena opsi user sudah ditentukan dalam seksi Host jakarta. Daftar lengkap opsi yang digunakan dalam kasus ini adalah sebagai berikut:
    HostName 192.168.1.10
    User wijaya
    Port 7654
    IdentityFile ~/.ssh/indonesia.key
    LogLevel INFO
    Compression yes
  • Saat menjalankan ssh malang, pola host yang cocok adalah: Host malang, Host *lang, Host * !magelang dan Host *. Opsi yang digunakan dalam kasus ini adalah:
    HostName 192.168.10.20
    User rahmat
    LogLevel INFO
    Compression yes
  • Jika Anda menjalankan ssh magelang, pola host yang cocok adalah: Host magelang, Host *lang dan Host *. Opsi yang digunakan dalam kasus ini adalah:
    HostName 192.168.10.50
    User rahmat
    Compression yes
  • Untuk semua opsi koneksi lain yang ditentukan di bagian Host *!magelang ,opsi pengaturan Host * akan digunakan.

Ganti Opsi File Konfigurasi SSH

Klien ssh menerima konfigurasinya dalam urutan prioritas berikut :

  • Opsi ditentukan dari baris perintah
  • Opsi didefinisikan dalam ~/.ssh/config
  • Opsi didefinisikan di /etc/ssh/ssh_config

Jika ingin mengganti satu opsi, Anda dapat menentukannya di baris perintah. Misalnya jika memiliki definisi berikut:

Host dev
    HostName dev.example.com
    User dani
    Port 2322

dan Anda ingin menggunakan semua opsi lain tetapi untuk terhubung sebagai root dan bukan user dengan nama dani cukup tentukan pengguna pada baris perintah:

ssh -o "User=root" dev

Switch -F (configfile) memungkinkan Anda untuk menentukan file konfigurasi alternatif per-user.

Jika ingin klien ssh mengabaikan semua opsi yang ditentukan dalam file konfigurasi ssh, Anda dapat menggunakan:

ssh -F /dev/null user@ip_atau_domain

Kesimpulan

Anda telah belajar cara mengkonfigurasi file konfigurasi ssh. Anda mungkin juga ingin mengatur otentikasi berbasis kunci SSH dan terhubung ke server Linux tanpa memasukkan kata sandi.

Secara default, SSH mendengarkan pada port 22. Mengubah port SSH default menambah lapisan keamanan tambahan ke server Anda dengan mengurangi risiko serangan otomatis.