Ücretsiz3 dakikalık yazılım sağlık testi: önce neyi düzeltmeniz gerektiğini görün
Blog

SSH Yapılandırması: Anahtarla Güvenli Giriş

3 dk okuma
  • SSH
  • Linux
  • DevOps
İçindekiler

Bir sunucuyu ilk kurduğunuzda yapmanız gereken ilk işlerden biri, parolayla girişi anahtarla girişe çevirmektir. Anahtar çifti iki parçadan oluşur: bilgisayarınızda kalan özel anahtar (private key) ve sunucuya koyduğunuz açık anahtar (public key). Sunucu, yalnızca eşleşen özel anahtara sahip olanı içeri alır; parola tahmin etmeye dayalı saldırılar böylece işe yaramaz hale gelir.

Bağlanırken bir sorunla karşılaşırsanız Permission denied (publickey) yazıma göz atabilirsiniz.

1. Anahtar üretmek

Anahtar her zaman kendi bilgisayarınızda üretilir. Bugün önerilen tür ed25519: RSA’dan daha kısa, daha hızlı ve daha güvenli.

ssh-keygen -t ed25519 -C "umut@laptop" -f ~/.ssh/sunucu-adi

Birden fazla sunucudan sorumluysanız her sunucu ya da proje için ayrı anahtar kullanın. Bir anahtarı değiştirmeniz ya da iptal etmeniz gerektiğinde bütün sunuculara erişiminizi kaybetmezsiniz; bu durumu bizzat yaşadım.

Komut bir parola (passphrase) ister. Boş bırakmayın: dizüstü bilgisayarınız çalınırsa özel anahtarınız tek başına bir işe yaramaz. Her bağlantıda parola yazmamak için anahtarı oturum boyunca ssh-agent tutar; macOS’ta anahtar zincirine de kaydedebilirsiniz:

ssh-add --apple-use-keychain ~/.ssh/sunucu-adi

2. Açık anahtarı sunucuya aktarmak

DigitalOcean, AWS gibi sağlayıcılarda sunucuyu oluştururken açık anahtarınızı panele ekleyebilirsiniz; sunucu ilk açılışta onu tanır. İçeriğini görmek için:

cat ~/.ssh/sunucu-adi.pub

Sunucu zaten çalışıyorsa ve henüz parolayla girebiliyorsanız ssh-copy-id anahtarı doğru dosyaya, doğru izinlerle ekler:

ssh-copy-id -i ~/.ssh/sunucu-adi.pub kullanici@sunucu

3. Bağlantıyı kolaylaştırmak: ~/.ssh/config

Her seferinde kullanıcı, adres ve anahtar yazmak yerine bunları bir kez tanımlayın:

Host sunucu-adi
  HostName 203.0.113.10
  User kullanici
  IdentityFile ~/.ssh/sunucu-adi
  IdentitiesOnly yes

Artık yalnızca şunu yazmanız yeterli. Bağlanırken özel anahtar kullanılır; açık anahtarı (.pub) -i ile vermek yanlıştır.

ssh sunucu-adi

4. Parolayla ve root olarak girişi kapatmak

Anahtarla girişin çalıştığını doğruladıktan sonra sunucuda parolayla girişi kapatın. Root ile doğrudan giriş yerine sudo yetkili kendi kullanıcınızı kullanın:

sudo nano /etc/ssh/sshd_config
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin no

Root ile girmek zorundaysanız PermitRootLogin prohibit-password kullanın; root yalnızca anahtarla girebilir. Eski yazılarda geçen without-password aynı anlama gelir ama artık eskimiş bir yazımdır.

Değişikliği sunucuyu yeniden başlatmadan, önce doğrulayıp sonra uygulayın:

sudo sshd -t
sudo systemctl reload ssh

Bu terminali kapatmadan, yeni bir terminalden ssh sunucu-adi ile bağlanabildiğinizi deneyin. Bir şey ters giderse açık kalan oturum, düzeltme yapabileceğiniz tek kapıdır.

Güncelleme notu

Bu yazının ilk hali 2021’de Medium’da yayımlandı. O sürümde kurulum sırasında root ve parola girişi açılıyor, RSA anahtar ve boş passphrase öneriliyor, bağlantı testinde açık anahtar kullanılıyor ve ayarları uygulamak için sunucu yeniden başlatılıyordu. Burada bunları güncel ve güvenli karşılıklarıyla değiştirdim; ~/.ssh/config bölümünü ekledim.

Yeni yazılar e-postanıza gelsin

Yeni bir yazı yayımladığımda kısa bir e-posta alırsınız. İstediğiniz zaman tek tıkla çıkabilirsiniz. Gizlilik

İlgili yazılar