Jika Anda secara teratur terhubung ke beberapa sistem jarak jauh melalui SSH, 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 server jarak jauh. Namun, ada solusi lain yang jauh lebih baik, dan lebih mudah untuk masalah ini. OpenSSH memungkinkan Anda menyiapkan file konfigurasi per pengguna tempat Anda dapat menyimpan opsi SSH yang berbeda untuk setiap mesin jarak jauh yang Anda sambungkan.
Artikel ini membahas 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.
Lokasi File Konfigurasi SSH #
File konfigurasi sisi klien OpenSSH bernama config
, dan disimpan di .ssh
direktori di bawah direktori home pengguna.
~/.ssh
direktori dibuat secara otomatis ketika pengguna menjalankan ssh
perintah untuk pertama kalinya. Jika direktori tidak ada di sistem Anda, buat dengan menggunakan perintah di bawah ini:
mkdir -p ~/.ssh && chmod 700 ~/.ssh
Secara default, file konfigurasi SSH mungkin tidak ada, jadi Anda mungkin perlu membuatnya menggunakan touch
perintah:
touch ~/.ssh/config
File ini harus dapat dibaca dan ditulis hanya oleh pengguna dan tidak dapat diakses oleh orang lain:
chmod 600 ~/.ssh/config
Struktur dan Pola File Konfigurasi SSH #
File Konfigurasi SSH mengambil struktur 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 bait (bagian). Setiap bait dimulai dengan Host
direktif dan berisi opsi SSH khusus yang digunakan saat membuat koneksi dengan server SSH jarak jauh.
Indentasi tidak diperlukan tetapi disarankan karena membuat file lebih mudah dibaca.
Host
direktif dapat berisi satu pola atau daftar pola yang dipisahkan spasi. Setiap pola dapat berisi nol atau lebih karakter non-spasi atau salah satu penentu pola berikut:
*
- Mencocokkan nol atau lebih karakter. Misalnya,Host *
cocok dengan semua host, sedangkan192.168.0.*
cocok dengan host di192.168.0.0/24
subjaringan.?
- Cocok dengan tepat satu karakter. Polanya,Host 10.10.0.?
cocok dengan semua host di10.10.0.[0-9]
jangkauan.!
- Saat digunakan di awal pola, itu meniadakan kecocokan. Misalnya,Host 10.10.0.* !10.10.0.5
cocok dengan host mana pun di10.10.0.0/24
subnet kecuali10.10.0.5
.
Klien SSH membaca file konfigurasi bait demi bait, dan jika lebih dari satu pola cocok, opsi dari bait pertama yang cocok akan diutamakan. Oleh karena itu, lebih banyak deklarasi khusus host harus diberikan di awal file, dan penggantian yang lebih umum di akhir file.
Anda dapat menemukan daftar lengkap opsi ssh yang tersedia dengan mengetikkan man ssh_config
di terminal Anda atau mengunjungi halaman manual ssh_config.
File konfigurasi SSH juga dibaca oleh program lain seperti scp
, sftp
, dan rsync
.
Contoh File Konfigurasi SSH #
Sekarang setelah kita membahas dasar-dasar file konfigurasi SSH, mari kita lihat contoh berikut.
Biasanya, saat menghubungkan ke server jauh melalui SSH, Anda akan menentukan nama pengguna jarak jauh, nama host, dan port. Misalnya, untuk masuk sebagai pengguna bernama john
ke host bernama dev.example.com
pada port 2322
dari baris perintah, Anda akan mengetik:
ssh [email protected] -p 2322
Untuk terhubung ke server menggunakan opsi yang sama seperti yang diberikan pada perintah di atas, cukup dengan mengetik ssh dev
, letakkan baris berikut ke "~/.ssh/config
. Anda berkas:
Host dev
HostName dev.example.com
User john
Port 2322
Sekarang ketika Anda mengetik ssh dev
, klien ssh akan membaca file konfigurasi dan menggunakan detail koneksi yang ditentukan untuk dev
tuan rumah:
ssh dev
Contoh File Konfigurasi SSH Bersama #
Contoh ini memberikan informasi yang lebih detail tentang pola host dan prioritas opsi.
Mari kita ambil contoh file berikut:
Host targaryen
HostName 192.168.1.10
User daenerys
Port 7654
IdentityFile ~/.ssh/targaryen.key
Host tyrell
HostName 192.168.10.20
Host martell
HostName 192.168.10.50
Host *ell
user oberyn
Host * !martell
LogLevel INFO
Host *
User root
Compression yes
-
Saat Anda mengetik
ssh targaryen
, klien ssh membaca file dan menerapkan opsi dari kecocokan pertama, yaituHost targaryen
. Kemudian ia memeriksa bait berikutnya satu per satu untuk pola yang cocok. Yang cocok berikutnya adalahHost * !martell
(artinya semua host kecualimartell
), dan itu akan menerapkan opsi koneksi dari bait ini. Definisi terakhirHost *
juga cocok, tetapi klien ssh hanya akan mengambilCompression
pilihan karenaUser
opsi sudah ditentukan diHost targaryen
bait.Daftar lengkap opsi yang digunakan saat Anda mengetik
ssh targaryen
adalah sebagai berikut:HostName 192.168.1.10 User daenerys Port 7654 IdentityFile ~/.ssh/targaryen.key LogLevel INFO Compression yes
-
Saat menjalankan
ssh tyrell
pola host yang cocok adalah:Host tyrell
,Host *ell
,Host * !martell
danHost *
. Opsi yang digunakan dalam hal ini adalah:HostName 192.168.10.20 User oberyn LogLevel INFO Compression yes
-
Jika Anda menjalankan
ssh martell
, pola host yang cocok adalah:Host martell
,Host *ell
danHost *
. Opsi yang digunakan dalam hal ini adalah:HostName 192.168.10.50 User oberyn Compression yes
-
Untuk semua koneksi lainnya, klien ssh akan menggunakan opsi yang ditentukan di
Host * !martell
danHost *
bagian.
Ganti Opsi File Konfigurasi SSH #
Klien ssh membaca konfigurasinya dalam urutan prioritas berikut:
- Opsi yang ditentukan dari baris perintah.
- Opsi yang ditentukan dalam
~/.ssh/config
. - Opsi yang ditentukan dalam
/etc/ssh/ssh_config
.
Jika Anda ingin mengganti satu opsi, Anda dapat menentukannya di baris perintah. Misalnya, jika Anda memiliki definisi berikut:
Host dev
HostName dev.example.com
User john
Port 2322
dan Anda ingin menggunakan semua opsi lain selain terhubung sebagai pengguna root
bukannya john
cukup tentukan pengguna di baris perintah:
ssh -o "User=root" dev
-F
(configfile
) memungkinkan Anda untuk menentukan file konfigurasi alternatif per pengguna.
Untuk memberitahu ssh
klien untuk mengabaikan semua opsi yang ditentukan dalam file konfigurasi ssh, gunakan:
ssh -F /dev/null [email protected]
Kesimpulan #
Kami telah menunjukkan kepada Anda cara mengonfigurasi file konfigurasi ssh pengguna Anda. Anda mungkin juga ingin menyiapkan autentikasi berbasis kunci SSH dan menyambung ke server Linux Anda tanpa memasukkan kata sandi.
Secara default, SSH mendengarkan pada port 22. Mengubah port SSH default menambahkan lapisan keamanan ekstra ke server Anda dengan mengurangi risiko serangan otomatis.
Jika Anda memiliki pertanyaan, silakan tinggalkan komentar di bawah.