Basis pengetahuan

Tambahkan kunci SSH dan matikan kata sandi

Hasilkan kunci ed25519, instal dengan benar, uji sebelum merusak apa pun, dan matikan autentikasi kata sandi untuk selamanya.

Hasilkan kunci di mesin tempat Anda duduk

Bukan di server. Separuh privat tidak boleh pernah ada di host yang mungkin kehilangan akses, dan menyalinnya di sekitar mengalahkan tujuannya.

ssh-keygen -t ed25519 -a 100 -C "laptop-2026"

-a 100 menetapkan jumlah putaran KDF yang melindungi frasa sandi, yang merupakan satu-satunya hal yang berdiri di antara laptop curian dan armada Anda. Gunakan frasa sandi. Jika Anda memiliki token perangkat keras, gunakan itu sebagai gantinya:

ssh-keygen -t ed25519-sk -O resident -C "token-1"

Instal separuh publik

ssh-copy-id -i ~/.ssh/id_ed25519.pub deploy@<ipv4>

Dengan tangan, dari sesi root, jika akun belum memiliki kata sandi:

install -d -m 700 -o deploy -g deploy /home/deploy/.ssh
install -m 600 -o deploy -g deploy /dev/null /home/deploy/.ssh/authorized_keys
cat >> /home/deploy/.ssh/authorized_keys

Tempel baris tunggal, lalu Ctrl-D. Izin lebih penting daripada yang orang harapkan: sshd menolak direktori home yang dapat ditulis grup atau direktori .ssh dan menjelaskan dirinya hanya di log daemon, tidak pernah ke klien.

Batasi kunci saat Anda di sana

Opsi di authorized_keys berlaku per kunci. restrict mematikan semuanya, lalu Anda menambahkan kembali apa yang benar-benar dibutuhkan kunci:

restrict,pty ssh-ed25519 AAAAC3Nza... deploy@laptop

Kunci yang ada untuk menjalankan satu pekerjaan harus diizinkan menjalankan satu pekerjaan:

restrict,command="/usr/local/bin/backup-receive" ssh-ed25519 AAAAC3Nza... backup

Uji sebelum Anda mengunci

Biarkan sesi pertama terhubung. Dari terminal kedua:

ssh -o PreferredAuthentications=publickey deploy@<ipv4> id

Jika itu mencetak uid Anda, jalur kunci berhasil. Jika tidak, ssh -vvv di klien dan journalctl -u ssh -n 50 di server akan di antara keduanya mengatakan sisi mana yang tidak senang. Ini adalah izin kira-kira setengah dari waktu dan nama pengguna yang salah sebagian besar sisanya.

Matikan kata sandi

cat > /etc/ssh/sshd_config.d/20-keys-only.conf <<EOF
PubkeyAuthentication yes
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitEmptyPasswords no
AuthenticationMethods publickey
EOF
sshd -t && systemctl reload ssh

AuthenticationMethods publickey adalah sabuk di bawah kawat gigi. Bahkan jika drop-in berikutnya diam-diam mengaktifkan kembali kata sandi, daemon tetap menolak apa pun yang bukan kunci.

Konfirmasi dari klien bahwa pintu tertutup:

ssh -o PreferredAuthentications=password deploy@<ipv4>

Hasil yang diharapkan adalah Permission denied (publickey).

Kunci pada waktu penyebaran

Panel menyimpan daftar kunci per akun. Centang yang Anda inginkan dan cloud-init menulisnya selama boot pertama, yang berarti instance dapat ada untuk pertama kalinya dengan autentikasi kata sandi sudah mati. Menempelkan kunci ke pesanan mengubah sepuluh menit di atas menjadi satu.

Saat Anda kehilangan kunci

Tidak ada pemulihan berbasis identitas di sini, karena kami tidak memegang identitas. Konsol out-of-band adalah jalan kembali: ia mencapai instance melalui jalur yang tidak pernah menyentuh sshd, dan dari shell penyelamat Anda dapat menambahkan kunci baru dan melanjutkan.

Simpan kunci kedua di mesin kedua dan Anda tidak akan pernah perlu membaca artikel itu.

Siap saat Anda siap

Pilih kota. Pilih ukuran. Bayar dengan koin.

Tanpa formulir tentang siapa Anda, tanpa menunggu manusia untuk menyetujui, tanpa panggilan telepon untuk memverifikasi apa pun. Invoice dibersihkan dan kredensial masuk ke kotak masuk Anda.