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.
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-bastionSambungan 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/configPesan 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.