Pada episode ini kita akan menyimpan kredensial wget dengan aman: prompt interaktif, file netrc dengan permission yang benar, serta checklist keamanan untuk setiap download mulai dari HTTPS, verifikasi checksum, hingga risiko sumber yang tidak dipercaya.

Di episode 13 kalian memastikan bahwa server yang kalian ajak bicara benar-benar server yang kalian tuju — identitas pihak lain terverifikasi. Sekarang giliran sisi kalian: banyak server tidak akan mengirimkan apa pun sebelum membuktikan siapa kalian. Episode 14 membahas autentikasi di wget — dan, yang tidak kalah penting, bagaimana menyimpan bukti identitas itu tanpa membocorkannya. Keamanan bukan tentang kunci yang kuat saja; ia tentang kunci yang kuat yang tidak pernah tertinggal di meja.
Cara paling sederhana memberi kredensial ke wget adalah --user dan --password:
# JANGAN: password terlihat oleh siapa pun di sekitar
wget --user=budi --password=rahasia123 https://example.com/dataMasalahnya bukan pada mekanismenya, melainkan pada kebocorannya. Perintah itu tercatat di shell history, terlihat di process list (ps) selama proses berjalan, dan menempel di log terminal. Menulis password di command line seperti menulis PIN di dahi lalu mengantar paket — satu foto dan kartu ATM kalian sudah tidak berguna.
Warning
Aturan yang berlaku untuk semua kredensial: tidak pernah di command line, tidak pernah literal di script, tidak pernah di file yang masuk ke git. Riwayat git tidak pernah benar-benar bisa dibersihkan, dan shell history tidak pernah benar-benar bisa dihapus.
--ask-password: Prompt yang TersembunyiUntuk sesi manual, biarkan wget yang meminta password. Opsi --ask-password membuat wget menampilkan prompt interaktif dengan input yang disembunyikan:
wget --user=budi --ask-password https://example.com/dataKarakter yang kalian ketik tidak tampil di layar, tidak masuk ke shell history, dan tidak muncul di process list. Pola ini adalah kebiasaan yang benar untuk mesin yang dipakai bersama — sesederhana memilih pintu dengan kunci dari pada pintu tanpa kunci sama sekali.
.netrc: Rumah KredensialUntuk skrip dan otomasi, wget menyediakan cara yang lebih permanen: file .netrc. Ini adalah file teks berisi pasangan machine, login, dan password:
machine docs.example.com
login budi
password rahasia123Agar dipakai, wget perlu diarahkan ke file tersebut — bukan diaktifkan secara default:
wget --netrc https://docs.example.com/private/data--netrc membaca ~/.netrc; --netrc-file=/path/file menunjuk file kredensial khusus (misalnya di CI); --no-netrc menegaskan tidak memakai .netrc sama sekali.
.netrc menyimpan password dalam bentuk teks biasa, jadi perlakuannya harus seperti kunci:
chmod 600 ~/.netrcPermission 600 berarti hanya pemilik yang bisa membaca dan menulis. File yang bisa dibaca user lain adalah kunci yang ditaruh di depan pintu — dan banyak tool (termasuk wget) menolak atau menurunkan permission file yang terlalu terbuka. Karena kredensial hidup di file, bukan di command line, ia tidak pernah bocor lewat shell history.
Tip
Gunakan entri default di .netrc untuk host yang tidak terdaftar secara eksplisit: baris default login budi password rahasia dipakai sebagai cadangan. Hemat untuk sesi manual; untuk otomasi yang ketat, tulis machine per host agar tidak ada kredensial yang terkirim ke server yang salah.
--auth-no-challenge dan Kebijakan BasicSatu opsi yang sering disalahpahami: --auth-no-challenge. Secara default, wget menunggu server menantang dengan header WWW-Authenticate sebelum mengirim kredensial Basic. Opsi ini membalik urutan itu — kredensial dikirim lebih dulu tanpa menunggu tantangan:
wget --auth-no-challenge --user=budi --password=rahasia \
https://api.example.com/dataKeuntungannya: satu round-trip lebih cepat, dan berguna untuk server lama yang tidak mengirim tantangan dengan benar. Kelemahannya: kredensial dikirim bahkan ke server yang tidak memintanya. Gunakan hanya pada server yang kalian kenal baik — ini kebiasaan mengetuk pintu sambil membawa kartu identitas terbuka, cocok di rumah sendiri, berisiko di lingkungan asing.
Sekarang kita masuk bagian paling berharga dari episode ini — kebiasaan yang menyelamatkan kalian dari drama yang tidak perlu.
Selalu HTTPS untuk apa pun yang menyentuh kredensial. Autentikasi Basic di wget mengirim kredensial ter-enkode base64, dan base64 hanyalah encoding, bukan enkripsi — siapapun di jalur jaringan bisa memecahkannya dalam hitungan detik.
# JANGAN: kredensial terkirim hampir telanjang lewat HTTP
wget --user=budi --password=rahasia http://dl.contoh.local/dataHTTP tanpa TLS membuat --user/--password dan isi .netrc terkirim dalam bentuk yang bisa dibaca siapa pun di tengah jalan. HTTPS bukan saran — ia syarat.
Download yang sukses bukan berarti download yang benar. File bisa rusak di tengah jalan, atau sengaja diganti oleh pihak lain. Karena itu sumber terpercaya mempublikasikan checksum — sidik jari matematis file — yang harus kalian bandingkan setelah download. Skrip singkat ini memadukan timestamping dan verifikasi checksum:
#!/usr/bin/env bash
set -euo pipefail
URL="https://example.com/app/app-1.2.3.tar.gz"
EXPECTED="9f2c1a7b4d8e0f3c5a6b7c8d9e0f1a2b3c4d5e6f"
FILE="${URL##*/}"
wget --timestamping "$URL"
echo "$EXPECTED $FILE" | sha256sum -c --status || {
echo "Checksum tidak cocok — batalkan!" >&2
exit 1
}
echo "File valid: $FILE"Bila file sudah terverifikasi checksum-nya, terakhir ia berhenti. sha256sum -c membandingkan sidik jari yang dihitung ulang dengan nilai yang dipublikasikan; skrip berhenti sebelum memakai file yang mencurigakan. Untuk level yang lebih tinggi, verifikasi tanda tangan digital dengan GPG: gpg --verify file.sig file — checksum membuktikan file tidak berubah, signature membuktikan siapa yang menerbitkannya.
Setiap download adalah keputusan: mempercayakan eksekusi atau pemakaian file pada sumber tertentu. Mengunduh biner dari situs tidak resmi seperti mengundang orang asing masuk rumah tanpa memeriksa kartu identitas. Tiga pertanyaan yang selalu layak diajukan:
--no-check-certificate?Important
Dua lini pertahanan terakhir kalian adalah verifikasi sertifikat dan verifikasi checksum. Turunkan salah satunya — memakai --no-check-certificate atau mengabaikan checksum — dan seluruh rantai kepercayaan menjadi tebakan.
Episode 14 menutup lingkaran keamanan di sisi kalian: menjauhkan kredensial dari command line, memakai --ask-password untuk prompt yang tersembunyi, menyimpan kredensial di .netrc dengan permission 600, memahami --auth-no-challenge, lalu menjalani checklist keamanan — HTTPS di mana-mana, verifikasi checksum dan signature, serta menakar risiko sumber yang tidak dipercaya.
Inti yang perlu diingat: kredensial dan file yang kalian unduh adalah aset — perlakukan keduanya seperti itu. Kunci yang kuat tanpa kebiasaan penyimpanan yang aman hanyalah keyakinan yang salah.
Di episode 15 berikutnya kita beralih dari keamanan ke efisiensi: timestamping dan optimasi incremental — bagaimana membuat wget mengunduh hanya yang berubah, membatasi kecepatan, dan menjadi tetangga yang sopan bagi server. Sampai jumpa!