SSH anahtarı, VPS yönetiminde her bağlantıda sunucu parolasını kullanma ihtiyacını azaltır. Açık anahtar sunucuda tutulur; özel anahtar bilgisayarınızda kalır. Anahtarı bir parola cümlesiyle korumak, dosya ele geçirilirse ek koruma sağlar.
Güvenli geçişin kritik noktası doğru sıradır: anahtar oluşturun, ekleyin, yeni oturumda deneyin, sonra eski giriş yöntemini sınırlandırın. Mevcut bağlantıyı en sona kadar açık tutun.
Bu rehberle neler yapabilirsiniz?
- Ed25519 anahtar çifti oluşturmak
- Açık anahtarı doğru izinlerle sunucuya eklemek
- Parola girişini kapatmadan bağımsız bağlantı testi yapmak
Ubuntu Server 24.04 LTS ve modern OpenSSH istemcisi. Örnek IP adresini kendi adresinizle değiştirin.
Başlamadan önce- Çalışan bir SSH bağlantısı veya sağlayıcı konsolu
- VPS üzerinde sudo yetkili operator hesabı
- Linux, macOS veya OpenSSH istemcili Windows terminali
1. Anahtarı kendi bilgisayarınızda oluşturun
ssh-keygen -t ed25519 -a 64 -f ~/.ssh/serverq_ed25519 -C "serverq-admin"
ssh-keygen -lf ~/.ssh/serverq_ed25519.pubKomut dosya zaten varsa üzerine yazma sorusu sorar. Mevcut anahtarın üzerine yazmayın; farklı bir dosya adı seçin. Parola cümlesi sorulduğunda güçlü ve benzersiz bir değer belirleyin. İkinci komut açık anahtarın parmak izini gösterir; ekibinizde hangi anahtarın kime ait olduğunu kaydetmek için kullanabilirsiniz.
| Dosya | Nerede kalır? |
|---|---|
| serverq_ed25519 | Özel anahtar: yalnızca sizin güvendiğiniz cihaz ve şifreli yedeğiniz. |
| serverq_ed25519.pub | Açık anahtar: VPS üzerindeki authorized_keys dosyasına eklenir. |
Özel anahtarı destek kaydına, e-postaya, Git deposuna veya sunucuya kopyalamayın. Birden fazla ekip üyesi için tek anahtar paylaşmak yerine her kişiye ayrı anahtar verin. Böylece bir kişinin erişimini kaldırmak diğerlerini etkilemez.
2. Açık anahtarı sunucuya ekleyin
Parolalı girişiniz açıksa ve istemcinizde ssh-copy-id varsa aşağıdaki yöntem anahtarı doğru dosyaya ekler. Özel SSH portu kullanıyorsanız -p seçeneği ekleyin. Varsayılan örnekte port 22’dir.
ssh-copy-id -i ~/.ssh/serverq_ed25519.pub operator@203.0.113.10ssh-copy-id yoksa yerel .pub dosyasındaki tek satırı kopyalayın. Sunucuda operator hesabıyla aşağıdaki dosyayı açın ve satırı sona ekleyin. Var olan anahtarları silmeyin. Yönetici konsolunda root olarak çalışıyorsanız önce su - operator ile hedef kullanıcıya geçin.
mkdir -p ~/.ssh
chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
nano ~/.ssh/authorized_keysauthorized_keys dosyasının sahibi bağlanacağınız kullanıcı olmalıdır. Özel anahtarın kendisini veya birden çok satıra bölünmüş anahtarı yapıştırmak kimlik doğrulamayı bozabilir. Dosya ve üst klasörlerde başka kullanıcıların yazma yetkisi bulunması da OpenSSH’nin anahtarı reddetmesine yol açabilir.
3. Parola geri dönüşü olmadan deneyin
ssh -i ~/.ssh/serverq_ed25519 \
-o IdentitiesOnly=yes \
-o PreferredAuthentications=publickey \
-o PasswordAuthentication=no \
operator@203.0.113.10Özel anahtarınızın parola cümlesinin sorulması normaldir; bu sunucu hesabının parolası değildir. Yeni oturumda sudo -v komutunu da deneyin. Oturum açılması tek başına yönetici yetkisinin çalıştığını göstermez.
4. SSH politikasını kontrollü sıkılaştırın
Ubuntu, /etc/ssh/sshd_config.d altındaki dosyaları ana yapılandırmadan okuyabilir. OpenSSH’de birçok ayarın ilk okunan değeri geçerlidir; dosya adına bakarak sonucun doğru olduğunu varsaymayın. Bulut imajının mevcut ayarlarını inceleyin ve etkili yapılandırmayı kontrol edin.
sudo grep -R -E "^(Include|Match|PasswordAuthentication|KbdInteractiveAuthentication|PermitRootLogin)" /etc/ssh/sshd_config /etc/ssh/sshd_config.d/PubkeyAuthentication yes
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin noBu örnek, çalışan anahtarlı yönetici hesabı kurulduktan sonra doğrudan root girişini kapatır. Önceki adımları tamamlamadan uygulamayın. Match blokları varsa kullanıcıya veya adrese göre farklı sonuç oluşabilir; kendi bağlantı koşulunuzu ayrıca inceleyin.
sudo /usr/sbin/sshd -t
sudo /usr/sbin/sshd -T | grep -E "^(pubkeyauthentication|passwordauthentication|kbdinteractiveauthentication|permitrootlogin) "
sudo systemctl reload sshsshd -t hata verirse yeniden yüklemeyin. Başarılı yeniden yükleme sonrası üçüncü bir terminalde aynı anahtarlı bağlantıyı deneyin; ilk oturumu ancak bu testten sonra kapatın.
5. Bağlantı hatasını ve anahtar yaşam döngüsünü yönetin
| Belirti | Kontrol |
|---|---|
| Permission denied (publickey) | Kullanıcı, -i dosyası, authorized_keys içeriği, sahiplik ve izinler. |
| Connection timed out | IP, gerçek SSH portu, güvenlik duvarı ve sağlayıcı ağ kuralları. |
| Host identification has changed | Yeniden kurulum veya IP değişimini konsoldan doğrulayın. |
| Too many authentication failures | IdentitiesOnly=yes ile yalnızca seçilen anahtarı sunun. |
Yerelde ssh -v ile bağlantı ayrıntılarını, sunucuda sudo journalctl -u ssh ile servis günlüklerini inceleyin. Günlük paylaşırken kullanıcı adları ve adresleri gerekirse maskeleyin. Anahtar kaybolur veya bir cihaz ele geçirilirse authorized_keys içindeki ilgili satırı kaldırın; yeni anahtarı ayrı bir oturumda doğrulayın. SSH yapılandırmasını bozduysanız açık oturumdan eklediğiniz dosyayı geri alın, sshd -t çalıştırın ve servisi yeniden yükleyin.
İnceleme kapsamı
Ed25519 anahtar üretimi ve parmak izi okuma geçici dosyalarla denendi; Bash örneklerinin söz dizimi kontrol edildi. SSH servisinin giriş politikasına canlı değişiklik uygulanmadı. Resmî dokümanlar ve örnek yapılandırmalar 30 Eylül 2026 tarihinde incelendi. Bu rehberdeki tam kurulum boş bir VPS üzerinde uçtan uca çalıştırılmadı. Mevcut sunucunuzu değiştirmeden önce ayrı bir deneme ortamında, kendi sürüm ve erişim koşullarınızla doğrulayın.
Resmî kaynaklar
Sürüm ve yapılandırma ayrıntılarını ilgili projenin güncel belgelerinden takip edin.