SSH Yapılandırması: Anahtarla Güvenli Giriş
- 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-adiBirden 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-adi2. 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.pubSunucu 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@sunucu3. 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 yesArtı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-adi4. 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_configPasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin noRoot 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 sshBu 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