Bilgi tabanı

SSH anahtarı ekleyin ve parolaları kapatın

Bir ed25519 anahtarı oluşturun, düzgün kurun, bir şeyi bozmadan önce test edin ve parola kimlik doğrulamasını kalıcı olarak kapatın.

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_keys

Tek 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@laptop

Tek 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... backup

Kilitlemeden önce test edin

İlk oturumu bağlı bırakın. İkinci bir terminalden:

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

Bu, 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 ssh

AuthenticationMethods 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.

Hazır olduğunda

Bir şehir seç. Bir boyut seç. Kripto ile öde.

Kim olduğunuzla ilgili formlar yok, onay için insan bekleme yok, doğrulama için telefon görüşmesi yok. Ödeme onaylanır ve kimlik bilgileri gelen kutunuza düşer.