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_keysTempel 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@laptopKunci yang ada untuk menjalankan satu pekerjaan harus diizinkan menjalankan satu pekerjaan:
restrict,command="/usr/local/bin/backup-receive" ssh-ed25519 AAAAC3Nza... backupUji sebelum Anda mengunci
Biarkan sesi pertama terhubung. Dari terminal kedua:
ssh -o PreferredAuthentications=publickey deploy@<ipv4> idJika 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 sshAuthenticationMethods 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.