Lompat ke konten utama

Generator SSH Config

ProxyJump, multiplexing, dan urutan blok yang arahnya berlawanan dugaan

Susun blok ~/.ssh/config: alias, kunci, ProxyJump lewat bastion, multiplexing, dan penjaga sambungan. Setiap pilihan disertai akibatnya, termasuk peringatan tegas untuk ForwardAgent.

Yang Anda ketik: ssh prod
Mengisinya juga menambahkan IdentitiesOnly yes — alasannya ada di output.

Lewat bastion (ProxyJump)
Untuk server yang hanya dapat dijangkau lewat mesin perantara. Kunci privat Anda tidak pernah disalin ke bastion.

Kenyamanan
Obat untuk session yang membeku di balik NAT.
git push dan rsync berulang jadi seketika. Jangan di mesin bersama.
Berguna pada sambungan lambat saja.
Hampir selalu tidak yang Anda butuhkan. Untuk melompat ke server lain, pakai bastion di atas — ia menyelesaikan persoalan yang sama tanpa menitipkan apa pun. Baca peringatannya di output.

Tempel ke ~/.ssh/config, lalu chmod 600 ~/.ssh/config. Blok yang paling umum — misalnya Host * — wajib berada paling bawah; penjelasannya ada di output.

Seluruh perhitungan berjalan di browser Anda. Alamat IP, nama interface, dan password yang Anda masukkan tidak pernah dikirim ke server CoreNet.

Yang disusun

Satu blok ~/.ssh/config yang siap ditempel, sehingga ssh -p 2222 -i ~/.ssh/kunci pengguna@10.0.0.5 menjadi cukup ssh prod.

Bukan hanya untuk ssh. Seluruh tools yang memakai ssh di belakangnya ikut mengenali alias itu — git, rsync, scp, ansible. Itu alasan sebenarnya menaruhnya di config alih-alih menghafal argumen.

Urutan blok menentukan, dan arahnya berlawanan dugaan

Ini sebab paling sering dari config yang "tidak berlaku", dan hampir tidak pernah disebut di contoh mana pun.

~/.ssh/config memakai aturan yang pertama cocok yang menang untuk setiap setelan. Bukan yang paling khusus, bukan yang terakhir — yang pertama.

Akibatnya blok umum seperti Host * wajib berada paling bawah. Bila ditaruh di atas, setelan di dalamnya memenangi semua blok di bawahnya, dan blok khusus Anda diabaikan tanpa satu pun pesan error.

Orang yang menaruh Host * di baris pertama akan menghabiskan sore mencari sebab Port 2222-nya tidak dipakai.

ProxyJump: kunci Anda tidak pernah menyentuh bastion

Untuk server yang hanya dapat dijangkau lewat mesin perantara, cara yang biasa dipakai adalah masuk ke bastion lalu ssh lagi dari sana. Itu bekerja, tetapi menuntut kunci privat Anda ada di bastion — atau ForwardAgent menyala, yang lebih buruk lagi.

ProxyJump menyelesaikannya dengan benar:

Host prod
    HostName 10.0.0.5
    ProxyJump prod-bastion

Sambungan ke tujuan dibangun dari mesin Anda sendiri; bastion hanya meneruskan traffic-nya dan tidak pernah melihat kunci Anda. Satu perintah, ssh prod, dan lompatannya tidak terlihat.

Butuh OpenSSH 7.3 ke atas. Pada yang lebih tua, padanannya ProxyCommand ssh -W %h:%p bastion.

Multiplexing: bagian yang paling terasa cepatnya

ControlMaster auto membiarkan sambungan pertama hidup sepuluh menit, dan perintah berikutnya ke server yang sama memakainya kembali tanpa bersalaman ulang.

git push berulang, rsync bertahap, dan script yang menjalankan sepuluh perintah ssh berturut-turut menjadi terasa seketika — karena salaman TLS dan autentikasi hanya terjadi sekali.

Harganya dua. Bila sambungan induknya menggantung, perintah baru ikut menggantung; membebaskannya ssh -O exit prod. Dan jangan memakainya di mesin bersama: file socket di ControlPath adalah sambungan hidup yang dapat dipakai siapa pun yang bisa membacanya.

IdentitiesOnly yes, dan "Too many authentication failures"

Bila Anda mengisi IdentityFile, tool ini ikut menambahkan IdentitiesOnly yes. Alasannya bukan kerapian.

Tanpa itu, ssh tetap menawarkan seluruh kunci yang ada di ssh-agent satu per satu sebelum yang Anda tunjuk. Pada server yang membatasi percobaan autentikasi — defaultnya enam — Anda dapat ditolak dengan Too many authentication failures sebelum kunci yang benar sempat dicoba.

Yang membuat ini sulit dilacak: sebabnya bukan di server dan bukan di kunci itu, melainkan jumlah kunci di mesin Anda sendiri. Menambah satu kunci baru untuk keperluan lain dapat mematikan akses ke server yang selama ini normal.

ForwardAgent: hampir selalu bukan yang Anda butuhkan

ForwardAgent yes menitipkan kuasa kunci Anda kepada server tujuan. Siapa pun yang punya root di server itu dapat memakai agent Anda selama session berjalan untuk masuk ke semua server yang menerima kunci tersebut — tanpa pernah melihat kuncinya sendiri.

Yang biasanya dicari orang saat menyalakannya adalah melompat ke server lain. Untuk itu, ProxyJump menyelesaikan persoalan yang sama tanpa menitipkan apa pun.

Karena itu di formulir ini ia berdiri sendiri di bawah, bertanda merah, dan defaultnya mati.

chmod 600 yang pesannya tidak menyebut izin

SSH menolak file config yang dapat dibaca pengguna lain. Setelah menempelkan hasilnya:

chmod 600 ~/.ssh/config

Pesan error bila lupa tidak menyebut izin file sebagai sebabnya, sehingga mudah disangka isinya yang salah.

Pertanyaan yang sering diajukan

Bisakah satu blok melayani beberapa server? Bisa, dengan pola: Host web-* cocok untuk web-01 sampai web-99. Tool ini menyusun satu blok; menyalinnya lalu mengganti nama alias lebih jelas daripada pola yang terlalu pandai.

Bagaimana memastikan config saya benar-benar dipakai? ssh -v prod menampilkan baris Reading configuration data beserta blok yang cocok. Itu jawaban yang pasti; menebak dari perilakunya tidak.

Kenapa tidak ada pilihan StrictHostKeyChecking no? Karena itu mematikan satu-satunya perlindungan terhadap server yang dipalsukan, dan yang mencarinya biasanya sedang menutupi persoalan lain — kunci host yang berubah karena server dibangun ulang. Yang benar: hapus baris lamanya dari ~/.ssh/known_hosts, jangan matikan pemeriksaannya.

Apakah data saya dikirim ke server? Tidak. Seluruh penyusunan berjalan di browser Anda, dan alamat server Anda tidak pernah keluar dari komputer sendiri.