- Neden bir SSH anahtarı oluşturmalı ve kullanmalıyım?
- Önkoşullar ve temel kavramlar
- Linux/macOS/WSL'de SSH anahtarı oluşturma
- Windows'ta SSH anahtarı oluşturma (PowerShell / Windows OpenSSH)
- AWS EC2 ve Diğer Bulut Panellerine Genel Anahtarların İçe Aktarılması
- Anahtarı GitLab/GitHub'a ekleyin ve CI'da kullanın.
- Anahtar kurulumundan sonra sunucu ve güvenlik ayarları
- Farklı uygulamalar için pratik ipuçları
- Anahtar yönetimi, rotasyon ve standartlar
- Ek İpuçları ve Sorun Giderme
- Son güvenlik önerileri
- Özet ve önerilen kontrol listesi
Neden bir SSH anahtarı oluşturmalı ve kullanmalıyım?
Bulut ortamlarında ve uluslararası veri merkezlerinde, sunuculara güvenli ve otomatik giriş, her DevOps operasyonunun, web barındırmanın, render işlemlerinin, yapay zekanın ve veritabanı yönetiminin temel taşıdır. SSH anahtarları Bunlar, zayıf parolaların yerini alan standart, güvenli ve programlanabilir bir kimlik doğrulama yöntemidir.
Açık/özel anahtarların kullanılması, kaba kuvvet saldırılarının riskini azaltır, otomasyonu kolaylaştırır ve daha ayrıntılı erişim kontrollerinin uygulanmasını sağlar.
Önkoşullar ve temel kavramlar
Özel anahtar: Gizliliğini koruyan ve ifşa edilmemesi gereken dosyanız.
Açık anahtar: Sunucuya yerleştirilen bir dosya (authorized_keys).
Yaygın algoritmalar: ed25519 (Tavsiye edilen), RSA 4096.
Rotalar: ~/.ssh/id_* Linux/WSL üzerinde ve C:\Kullanıcılar\ \.ssh Windows üzerinde.
Erişimler: chmod 700 ~/.ssh Ve chmod 600 Özel anahtar için.
Linux/macOS/WSL'de SSH anahtarı oluşturma
Şu tavsiye edilir: ed25519 Uyumluluk nedenleriyle RSA'ya ihtiyacınız olmadığı sürece kullanın.
Shell'de anahtar oluşturma ve yönetme adımları
ssh-keygen -t ed25519 -C "[email protected]" -f ~/.ssh/id_ed25519 -o -a 100
ssh-keygen -t rsa -b 4096 -C "[email protected]" -f ~/.ssh/id_rsa -o -a 100
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
ls -la ~/.ssh
cat ~/.ssh/id_ed25519.pub
ssh-copy-id -i ~/.ssh/id_ed25519.pub [email protected]
ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2222 [email protected]
chmod 400 my-aws-key.pem
ssh -i my-aws-key.pem [email protected]Not: AWS'de, bir örnek başlattığınızda genellikle anahtarı seçer veya içe aktarırsınız. PEM dosyanız varsa, kimlik olarak onu kullanın.
Windows'ta SSH anahtarı oluşturma (PowerShell / Windows OpenSSH)
Windows 10/11'de OpenSSH istemcisi bulunur; ayrıca PuTTY/Puttygen kullanarak da bağlantı kurabilirsiniz.
PowerShell komutları
ssh-keygen -t ed25519 -C "[email protected]" -f $env:USERPROFILE\.ssh\id_ed25519
Start-Service ssh-agent
ssh-add $env:USERPROFILE\.ssh\id_ed25519Dosya yolu:
C:\Kullanıcılar\ \.ssh\id_ed25519C:\Kullanıcılar\ \.ssh\id_ed25519.pub
PuTTYgen ile PEM'i PPK'ye dönüştürün
Genel adımlar:
PuTTYgen'i açın.
Dosya > Özel anahtarı ve dosyayı yükle
my-aws-key.pemTüm dosyaları yükle (göster).Özel anahtarı şu şekilde kaydedin:
my-aws-key.ppkVe bunu PuTTY'de kullanın (Bağlantı > SSH > Kimlik Doğrulama > Özel anahtar dosyası).
AWS EC2 ve Diğer Bulut Panellerine Genel Anahtarların İçe Aktarılması
AWS Konsolu: EC2 > Anahtar Çiftleri > Anahtar çiftini içe aktar. Dosya adı ve içeriği .pub Girmek.
Bir örnek oluştururken, mevcut bir anahtar çiftini seçebilirsiniz. Diğer veri merkezlerinde genellikle panelde SSH anahtarını Yükle/İçe Aktar seçeneği bulunur.
Cloud-init'e genel anahtar ekleme örneği
#cloud-config
ssh_authorized_keys:
- ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... [email protected]Anahtarı GitLab/GitHub'a ekleyin ve CI'da kullanın.
GitLab için: Kullanıcı Ayarları > SSH Anahtarları Ardından genel anahtarı yapıştırın. Anahtarları dağıtmak için projeye gidin.
CI/CD ortamında, özel anahtarı korumalı bir değişken olarak yükleyin ve kısıtlı erişime sahip bir dosya oluşturarak iş içinde kullanın (chmod 600).
Anahtar kurulumundan sonra sunucu ve güvenlik ayarları
Adım 1: İzinleri ayarlayın.
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_ed25519Ardından ayarlar /etc/ssh/sshd_config Kontrol et ve güncelle:
Şifre kimlik doğrulaması yok
PermitRootLogin hayır
PubkeyAuthentication evet
Yapabilirsiniz Kullanıcılara İzin Ver Kullanıcıları kısıtlamak üzere ayarlandı.
UseDNS yok İstenirse bağlantı noktası da değiştirilebilir.
sudo systemctl restart sshdGüvenlik Duvarı:
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw allow 2222/tcpKaba kuvvet saldırılarını önlemek için Fail2ban veya CrowdSec kullanın:
sudo apt install fail2banHassas sunucular için, özel ağlara doğrudan erişimi kısıtlamak amacıyla bastion/jump host kullanın.
Farklı uygulamalar için pratik ipuçları
Yatırımcılar için (Alım satım için VPS)
Bir konum seçin: En düşük gecikme süresi için aracı kurum veya borsa sunucularına yakın konum. Hedef pazarınıza yakın bir konum sağlayabilecek 85'ten fazla küresel lokasyonumuz bulunmaktadır.
SSH'yi yalnızca statik IP adresine veya VPN üzerinden erişime kısıtlamanız önerilir:
sudo ufw allow from 203.0.113.5 to any port 22Oyuncular için (oyun VPS'si)
Oyun sunucuları için, güçlü eşleşme ve uygun CDN/BGP'ye sahip konumlar kullanın. Saldırı yüzeyini azaltmak için parolalar yerine SSH anahtarları ve bir bastion sunucusu kullanın.
Yapay zeka ve görüntü işleme için (GPU Bulut)
GPU sunucularına bağlanmak için güçlü anahtarlar (ed25519/RSA4096) kullanın ve her proje için ayrı bir kullanıcı ve anahtar atayın.
rsync -avz -e "ssh -i ~/.ssh/id_ed25519 -p 2222" /local/path user@remote:/remote/pathHosting ve GitLab hosting için
Sunucuya özgü, sınırlı erişime sahip bir anahtar (Dağıtım anahtarı) kullanarak sunucudaki özel depolara otomatik olarak erişebilirsiniz.
Anahtar yönetimi, rotasyon ve standartlar
Tuşları düzenli aralıklarla (örneğin 6 ila 12 ayda bir) değiştirin.
Eski anahtarları çıkarın.
yetkili_anahtarlarVe bulut panelini silin.Özel anahtar için parola kullanın ve bunu bir parola yöneticisinde saklayın.
Kuruluşlarda, merkezi yönetim için SSH sertifikaları ve CA (OpenSSH CA) kullanılır.
Ek İpuçları ve Sorun Giderme
Bir hatayla karşılaşıldığında Erişim reddedildi (publickey) Genel anahtarın mevcut olduğundan emin olun. ~/.ssh/yetkilendirilmiş_anahtarlar Mevcut ve izinleri doğru.
sudo journalctl -u sshd -e
sudo tail -f /var/log/auth.logProxyJump veya jump host kullanıyorsanız, yapılandırma dosyası faydalı olacaktır:
Host bastion
HostName bastion.example.com
User ubuntu
IdentityFile ~/.ssh/id_ed25519
Host internal-*
ProxyJump bastion
User deploy
IdentityFile ~/.ssh/id_deployİtibaren SunucuCanlılıkAralığı Ve SunucuCanlıSayıMaksimum Ani oturum kesintilerini önlemek için SSH yapılandırmasında kullanın.
Son güvenlik önerileri
SSH erişimini IP adresleriyle sınırlandırmak, VPN veya özel ağ kullanmak ve hassas sunucular için DDoS saldırılarına karşı koruma hizmetleri kullanmak da diğer önemli noktalardır.
Özet ve önerilen kontrol listesi
Anahtar oluşturma: ed25519 parola ile
Dosya koruması:
chmod 700 ~/.ssh && chmod 600 private_keySSH-Agent'ı etkinleştirme ve anahtarları ekleme
Genel anahtarı AWS paneline veya veri merkezine yükleyin veya cloud-init komutunu kullanın.
PasswordAuthentication ve PermitRootLogin'i devre dışı bırakma
Güvenlik Duvarı/UFW ve Fail2ban veya CrowdSec
Hassas erişim için bastion, IP kısıtlaması ve VPN kullanımı.
Düzenli anahtar çoğaltma ve döndürme









