Anahtarı oturduğunuz makinede üretin
Sunucuda değil. Özel yarı, erişiminizi kaybedebileceğiniz bir sunucuda asla bulunmamalıdır ve onu kopyalamak, ona sahip olmanın amacını ortadan kaldırır.
ssh-keygen -t ed25519 -a 100 -C "laptop-2026"-a 100, parolayı koruyan KDF tur sayısını ayarlar; parola, çalınmış bir dizüstü bilgisayar ile filonuz arasındaki tek şeydir. Bir parola kullanın. Donanım belirteciniz varsa, bunun yerine onu kullanın:
ssh-keygen -t ed25519-sk -O resident -C "token-1"Ortak yarıyı kurun
ssh-copy-id -i ~/.ssh/id_ed25519.pub deploy@<ipv4>Hesabın henüz parolası yoksa, root oturumundan elle:
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_keysTek satırı yapıştırın, ardından Ctrl-D. İzinler insanların beklediğinden daha önemlidir: sshd, grup tarafından yazılabilir bir ev dizinini veya .ssh dizinini reddeder ve bunu yalnızca arka plan günlüğünde açıklar, asla istemciye bildirmez.
Oradayken anahtarı kısıtlayın
authorized_keys içindeki seçenekler anahtar başına uygulanır. restrict her şeyi kapatır ve ardından anahtarın gerçekten ihtiyaç duyduğu şeyi geri eklersiniz:
restrict,pty ssh-ed25519 AAAAC3Nza... deploy@laptopTek bir işi yürütmek için var olan bir anahtar, tek bir işi yürütmesine izin verilmelidir:
restrict,command="/usr/local/bin/backup-receive" ssh-ed25519 AAAAC3Nza... backupKilitlemeden önce test edin
İlk oturumu bağlı bırakın. İkinci bir terminalden:
ssh -o PreferredAuthentications=publickey deploy@<ipv4> idBu, uid'nizi yazdırırsa, anahtar yolu çalışıyor demektir. Yazdırmazsa, istemcideki ssh -vvv ve sunucudaki journalctl -u ssh -n 50 birlikte hangi tarafın sorunlu olduğunu söyleyecektir. Zamanın yaklaşık yarısında izinlerdir ve geri kalanının çoğunda yanlış kullanıcı adıdır.
Parolaları kapatın
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, parantezlerin altındaki kemerdir. Daha sonra eklenen bir dosya parolaları sessizce yeniden etkinleştirse bile, arka plan programı anahtar olmayan her şeyi yine de reddeder.
İstemciden kapının kapalı olduğunu doğrulayın:
ssh -o PreferredAuthentications=password deploy@<ipv4>Beklenen sonuç Permission denied (publickey)'dır.
Dağıtım zamanında anahtarlar
Panel, hesap başına bir anahtar listesi tutar. İstediklerinizi işaretleyin ve cloud-init bunları ilk önyükleme sırasında yazar; bu, bir örneğin ilk kez parola kimlik doğrulaması kapalıyken var olabileceği anlamına gelir. Anahtarı siparişe eklemek, yukarıdaki on dakikayı bire indirir.
Anahtarı kaybettiğinizde
Burada kimlik tabanlı kurtarma yoktur, çünkü kimlik tutmuyoruz. Bant dışı konsol geri dönüş yoludur: örneğe sshd'ye asla dokunmayan bir yol üzerinden ulaşır ve kurtarma kabuğundan yeni bir anahtar ekleyip devam edebilirsiniz.
İkinci bir makinede ikinci bir anahtar tutun ve bu makaleyi okumaya asla ihtiyaç duymayacaksınız.