SSH Anahtarı Oluşturma: Windows, macOS ve Linux’ta Sunucuya Ekleme
SSH anahtarı oluşturma, sunucuya şifre yerine kriptografik bir anahtar çiftiyle bağlanmanın ilk adımıdır: özel anahtar bilgisayarınızda kalır, genel anahtar sunucuya kopyalanır ve girişte hiçbir gizli bilgi ağ üzerinden gönderilmez. Kaba kuvvet saldırıları şifre tahminine dayandığından, anahtarla giriş ve kapatılmış şifreli giriş bu saldırıları sonuçsuz bırakır.
LIONFIN VPS sunucularında tam root erişimine sahip olduğunuz için anahtarı istediğiniz kullanıcıya ekleyebilirsiniz; SSH erişimi sunan Linux hosting hesaplarında da aynı anahtar çifti kullanılır. Sunucuya ilk bağlantıyı henüz kurmadıysanız VPS bağlantı rehberine göz atın.
Kısa cevap
SSH anahtarı oluşturma, bilgisayarınızda ssh-keygen -t ed25519 komutuyla bir özel ve bir genel anahtar çifti üretip genel anahtarı sunucudaki ~/.ssh/authorized_keys dosyasına eklemektir. Komut Windows 10/11 PowerShell, macOS ve Linux terminalinde hazır gelir. Özel anahtar yalnızca sizin cihazınızda kalır ve bir parolayla (passphrase) korunmalıdır. Anahtarla girişin çalıştığını doğruladıktan sonra sunucuda şifreyle girişi kapatabilirsiniz.
SSH anahtarı nedir, hangi türü seçmelisiniz?
SSH anahtarı, birbirine matematiksel olarak bağlı iki dosyadan oluşan bir kimlik doğrulama yöntemidir: id_ed25519 özel anahtardır ve kimseyle paylaşılmaz; id_ed25519.pub genel anahtardır ve bağlanacağınız her sunucuya kopyalanabilir. Sunucu, genel anahtarla eşleşen özel anahtara sahip olduğunuzu doğrular; özel anahtarın kendisi ağa hiç çıkmaz.
| Tür | Komut | Ne zaman |
|---|---|---|
| Ed25519 | ssh-keygen -t ed25519 | Varsayılan tercih: kısa, hızlı, güncel OpenSSH sürümlerinde destekli |
| RSA 4096 | ssh-keygen -t rsa -b 4096 | Ed25519 desteklemeyen eski sistem ya da cihaz |
| Ed25519-SK | ssh-keygen -t ed25519-sk | FIDO2 uyumlu donanım güvenlik anahtarı kullananlar |
Anahtarla giriş, web sitesi güvenliği kontrol listesindeki hesap güvenliği maddelerinin sunucu tarafındaki karşılığıdır.
Windows, macOS ve Linux’ta SSH anahtarı oluşturma nasıl yapılır?
SSH anahtarı oluşturma işlemi üç işletim sisteminde de aynı komutla yapılır: Windows 10 ve 11’de PowerShell’i, macOS ve Linux’ta Terminal’i açın. -C parametresi anahtarı tanımanızı sağlayan bir etikettir:
ssh-keygen -t ed25519 -C "ad@dizustu"- Enter file in which to save the key sorusunu Enter ile geçin; anahtar
~/.ssh/id_ed25519(Windows’taC:\Users\KullaniciAdi\.ssh\id_ed25519) konumuna yazılır. - Enter passphrase sorusunda anahtarı koruyacak bir parola belirleyin; dosya çalınsa bile bu parola olmadan kullanılamaz.
- Genel anahtarı görüntüleyin: Linux ve macOS’ta
cat ~/.ssh/id_ed25519.pub, PowerShell’deGet-Content $env:USERPROFILE\.ssh\id_ed25519.pub.
Çıktı ssh-ed25519 AAAA… ad@dizustu biçiminde tek satırdır. Windows’ta komut bulunamıyorsa İsteğe bağlı özellikler ekranından OpenSSH İstemcisi bileşenini ekleyin; ssh -V kurulu sürümü gösterir. “already exists. Overwrite” sorusuna n yanıtı verin ve komutu -f ~/.ssh/id_ed25519_web gibi farklı bir dosya adıyla yeniden çalıştırın; eski anahtarın üzerine yazmak onu kullanan tüm bağlantıları keser.
Genel anahtar sunucuya nasıl eklenir?
Genel anahtar, sunucuda bağlanacağınız kullanıcının ~/.ssh/authorized_keys dosyasına tek satır olarak eklenir; bu adım için sunucuya şifreyle girebiliyor olmanız gerekir. Linux ve macOS’ta ssh-copy-id dizini, dosyayı ve izinleri kendisi ayarlar:
ssh-copy-id -i ~/.ssh/id_ed25519.pub deploy@SUNUCU_IP
# SSH farklı bir portta çalışıyorsa:
ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2222 deploy@SUNUCU_IPWindows’ta ssh-copy-id yoktur; PowerShell’de aynı işi şu tek satır yapar:
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh deploy@SUNUCU_IP "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"Elle eklemek isterseniz sunucuda nano ~/.ssh/authorized_keys ile dosyayı açıp .pub içeriğini yapıştırın; satır bölünürse anahtar tanınmaz. Sonra yeni bir terminalde ssh deploy@SUNUCU_IP ile bağlanın: sunucu şifresi yerine anahtar parolası soruluyor ya da doğrudan giriş yapılıyorsa ekleme başarılıdır.
Dosya izinleri neden 700 ve 600 olmalı?
OpenSSH sunucusu, başkalarının yazabildiği anahtar dosyalarına güvenmez; varsayılan StrictModes yes ayarı nedeniyle izinleri gevşek dosyalardaki anahtarları reddeder. Elle oluşturduğunuz ya da root olarak kopyaladığınız dosyalarda izinleri ve sahipliği düzeltin:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
sudo chown -R deploy:deploy /home/deploy/.ssh| Yol | İzin | Neden |
|---|---|---|
Sunucuda ~/.ssh | 700 | Dizine yalnızca sahibi erişir |
Sunucuda authorized_keys | 600 | Başkası anahtar ekleyemez |
| Sunucuda ev dizini | 755 ya da 750 | Grup ya da herkes yazabiliyorsa anahtar reddedilir |
| Bilgisayarınızda özel anahtar | 600 | Daha açık izinde istemci anahtarı kullanmaz |
İstemcide izinler açıksa UNPROTECTED PRIVATE KEY FILE! uyarısı görürsünüz; Linux ve macOS’ta chmod 600 ~/.ssh/id_ed25519 yeterlidir. Windows’ta anahtar başka bir klasörden kopyalandıysa dosyanın Güvenlik sekmesinden diğer kullanıcıların erişimini kaldırın.
Parola (passphrase) ve ssh-agent nasıl kullanılır?
Passphrase özel anahtar dosyasını şifreler; ssh-agent ise çözülmüş anahtarı oturum boyunca bellekte tutarak parolayı her bağlantıda yeniden yazmanızı önler. Linux masaüstü ortamlarının çoğu bir ajanı kendiliğinden başlatır; düz bir terminal oturumunda ajanı elle çalıştırın:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519macOS’ta ssh-add --apple-use-keychain ~/.ssh/id_ed25519 parolayı Anahtar Zinciri’ne kaydeder. Windows’ta OpenSSH Authentication Agent hizmeti varsayılan olarak devre dışıdır; yönetici olarak açtığınız PowerShell’de bir kez etkinleştirip anahtarı ekleyin:
Get-Service ssh-agent | Set-Service -StartupType Automatic
Start-Service ssh-agent
ssh-add $env:USERPROFILE\.ssh\id_ed25519Parolayı sonradan eklemek ya da değiştirmek için ssh-keygen -p -f ~/.ssh/id_ed25519 kullanın; anahtarın kendisi değişmediği için sunuculardaki kayıtları güncellemeniz gerekmez.
~/.ssh/config ile kısa bağlantı adı nasıl tanımlanır?
~/.ssh/config dosyası, sık bağlandığınız sunucuların IP, kullanıcı, port ve anahtar bilgisini tek bir takma ada bağlar. Windows’ta dosya C:\Users\KullaniciAdi\.ssh\config konumundadır:
Host web1
HostName 203.0.113.25
User deploy
Port 22
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yesArtık ssh web1 yazmanız yeterlidir; scp, sftp, rsync ve VS Code Remote-SSH eklentisi de aynı adı tanır. IdentitiesOnly yes satırı, istemcinin ajandaki bütün anahtarları sırayla denemesini engeller; çok sayıda anahtarınız varsa sunucunun “Too many authentication failures” hatasıyla bağlantıyı kesmesinin önüne geçer.
PuTTY kullanıyorsanız anahtar nasıl hazırlanır?
PuTTY, OpenSSH biçimindeki özel anahtarı doğrudan okumaz; PuTTY kullanıyorsanız SSH anahtarı oluşturma adımını PuTTYgen ile yapar ya da mevcut anahtarı .ppk biçimine dönüştürürsünüz:
- PuTTYgen’de anahtar türü olarak EdDSA (Ed25519) seçip Generate düğmesine basın ve rastgelelik için fareyi pencere içinde gezdirin.
- Key passphrase alanlarına parolanızı yazıp Save private key ile
.ppkdosyasını kaydedin. - Public key for pasting into OpenSSH authorized_keys file kutusundaki satırı sunucudaki
authorized_keysdosyasına ekleyin. - PuTTY’de Connection → SSH → Auth → Credentials (eski sürümlerde Connection → SSH → Auth) altında
.ppkdosyasını seçip oturumu kaydedin.
Elinizde OpenSSH anahtarı varsa PuTTYgen’de Conversions → Import key ile açıp Save private key demeniz yeterlidir; ters yön için Conversions → Export OpenSSH key kullanılır.
Şifreyle girişi ne zaman kapatmalısınız?
Şifreyle girişi, anahtarla girişi ayrı bir terminalde başarıyla denedikten sonra kapatın; erken kapatmak sunucuya erişiminizi kaybettirebilir. Sunucuda bir yapılandırma parçası oluşturup sınayın ve servisi yeniden başlatın:
echo 'PasswordAuthentication no' | sudo tee /etc/ssh/sshd_config.d/00-anahtar.conf
sudo sshd -t && sudo systemctl restart sshDebian tabanlı dağıtımlarda servis birimi ssh adını taşır; sshd takma adı her sistemde tanımlı olmayabilir. Root girişi, sudo kullanıcısı ve port ayarlarıyla birlikte tam sertleştirme sırası VPS ilk kurulum adımları rehberinde; kalan kaba kuvvet denemelerini engellemek için fail2ban kurulumu önerilir.
Özel anahtarınızı kaybederseniz sunucuya başka bir yetkili oturumdan yeni bir genel anahtar eklemeniz gerekir. Bu yüzden anahtarın parolalı bir kopyasını parola yöneticinizde ya da şifreli bir yedekte saklayın; birden fazla cihazdan bağlanıyorsanız her cihaza ayrı anahtar üretin.
Sık Sorulan Sorular
SSH “Permission denied (publickey)” hatası nasıl çözülür?
Bu hata, sunucunun sunduğunuz anahtarı kabul etmediğini gösterir. Önce doğru kullanıcıyla bağlandığınızı ve genel anahtarın o kullanıcının authorized_keys dosyasında tek satır olarak durduğunu kontrol edin. Ardından ~/.ssh dizininin 700, authorized_keys dosyasının 600 olduğundan emin olun. ssh -v çıktısı istemcinin hangi anahtarı denediğini, sunucudaki sudo journalctl -u ssh çıktısı reddetme nedenini gösterir.
Aynı SSH anahtarını birden fazla sunucuda kullanabilir miyim?
Evet; genel anahtarı istediğiniz kadar sunucuya ekleyebilirsiniz ve bu yaygın bir kullanımdır. Risk, özel anahtar ele geçirilirse bu sunucuların tümüne erişilebilmesidir; bu yüzden anahtarı güçlü bir parolayla koruyun. Farklı müşteriler, ekipler ya da güvenlik seviyeleri için ayrı anahtar çiftleri üretip ~/.ssh/config içinde sunucu başına IdentityFile tanımlamak riski bölmenin pratik yoludur.
SSH anahtarına parola koymak zorunlu mu?
Zorunlu değildir ama önerilir. Parolasız bir özel anahtar, dosyayı kopyalayan herkesin sunucularınıza girmesine izin verir; parola ise çalınan dosyayı tek başına işe yaramaz kılar. Parolayı her bağlantıda yazmak istemiyorsanız ssh-agent ya da macOS Anahtar Zinciri oturum boyunca hatırlar. Yalnızca otomasyon ve yedekleme betikleri için yetkisi kısıtlı, ayrı bir parolasız anahtar kullanmak makul bir istisnadır.
Bilgisayarımı değiştirirsem SSH anahtarım ne olur?
Anahtar dosyaları eski bilgisayarın .ssh klasöründe kalır. Yeni cihazda yeni bir anahtar çifti üretip genel anahtarı sunuculara eklemek, ardından eski anahtarı authorized_keys dosyalarından silmek en temiz yoldur. Eski özel anahtarı taşımak isterseniz dosyayı şifreli bir ortamla aktarın ve yeni cihazda izinlerini 600 yapın; e-posta ya da mesajlaşma uygulamasıyla göndermeyin.
Kaybolan ya da çalınan bir SSH anahtarı nasıl iptal edilir?
Sunucuda ilgili kullanıcının authorized_keys dosyasını açın ve kayıp anahtara ait satırı silin; satır sonundaki etiket, yani ssh-keygen -C ile verdiğiniz açıklama, doğru satırı bulmayı kolaylaştırır. Değişiklik bir sonraki girişte geçerlidir, servisi yeniden başlatmanız gerekmez; ancak açık oturumlar bundan etkilenmediği için şüpheli oturumları who komutuyla kontrol edin. Anahtarın eklendiği tüm sunucularda aynı işlemi yapın ve oturum günlüklerini inceleyin.
Bu makale yardımcı oldu mu?
Geri bildiriminiz için teşekkürler!
kişi faydalı buldu