SSH Kullanırken Hız, Güvenlik ve Kararlılık Sağlayan Ayarlar
Eğer her gün SSH ile deploy, debugging veya dosya senkronizasyonu yapıyorsan, mutlaka yavaş ya da gecikmeli bağlantılarla karşılaşmışsındır. Güzel haber şu: birkaç basit SSH ayarıyla bağlantılarını daha hızlı, kararlı ve güvenli hale getirebilirsin. Bu ayarları ~/.ssh/config veya sshd_config dosyana ekleyebilirsin.
1. 🔁 Connection Multiplexing (Bağlantı Paylaşımı) Aktif Et
Her SSH bağlantısında (scp, rsync dahil), SSH tekrar oturum açar, kimlik doğrular ve anahtar değişimi yapar. Bu işlemler ekstra gecikmeye neden olur. Multiplexing ile aynı TCP bağlantısını birden fazla SSH oturumu için tekrar kullanabilirsin.
~/.ssh/config dosyana ekle:
Host *
ControlMaster auto
ControlPath ~/.ssh/cm-%r@%h:%p
ControlPersist 5m
🧩 Açıklama:
ControlMaster auto: Aynı bağlantıyı birden fazla oturumla paylaşır.ControlPath: Socket dosyasının nerede tutulacağını belirtir.ControlPersist 5m: Son oturum kapandıktan sonra 5 dakika boyunca bağlantıyı açık tutar.
Bu ayar CI/CD işlemlerinde veya birden fazla SSH çağrısı yapan scriptlerde anında hız artışı sağlar.
2. ⚡ Daha Hızlı Şifreleme (Cipher) Algoritmaları Kullan
Bazı şifreleme yöntemleri (örneğin aes256-cbc) CPU’yu çok zorlar. Yeni nesil CPU’lar [email protected] gibi modern algoritmalar için donanımsal hızlandırma sağlar.
~/.ssh/config dosyana ekle:
Host *
Ciphers [email protected],[email protected]Ya da bağlantı anında test et:
ssh -o [email protected] user@host💡 Özellikle ARM tabanlı cihazlarda veya düşük güçteki sistemlerde belirgin hız farkı hissedilir.
3. 🔄 Bağlantının Kopmasını Engelle (KeepAlive)
VPN düşmesi veya ağ kesintisi yaşandığında SSH bağlantısı kopabilir. Bunu KeepAlive paketleriyle önleyebilirsin.
İstemci tarafında (~/.ssh/config):
Host *
ServerAliveInterval 60
ServerAliveCountMax 3Sunucu tarafında (/etc/ssh/sshd_config):
ClientAliveInterval 60
ClientAliveCountMax 3💡 Bu ayar, 60 saniyede bir “yaşıyor musun?” paketi gönderir. 3 kere cevap alamazsa oturumu düzgünce kapatır. Sonuç: donmuş SSH oturumlarına elveda.
4. 🚫 Reverse DNS Sorgularını Kapat (Sunucu Tarafı)
SSH, bağlantı geldiğinde IP’nin DNS’ini çözmeye çalışır. DNS yavaşsa veya hatalıysa bağlantı birkaç saniye geç açılır.
Sunucuda kapat:
# /etc/ssh/sshd_config
UseDNS noSSH servisini yeniden yükle:
sudo systemctl reload sshd⚡ Bağlantı süresi gözle görülür şekilde hızlanır.
5. 🧠 Bilinen Hostları Önceden Ekle
CI/CD pipeline’larında SSH bazen bilinmeyen host için onay ister. Bu da otomasyonun durmasına neden olabilir.
Güvendiğin sunucular için host anahtarlarını önceden ekle:
ssh-keyscan -H server.example.com >> ~/.ssh/known_hostsBirden fazla sunucu için:
for host in server1 server2 server3; do
ssh-keyscan -H $host >> ~/.ssh/known_hosts
done⚠️ Dikkat: Bu işlemi sadece güvendiğin sunucular için yap. Yanlış kullanılırsa MITM (man-in-the-middle) saldırılarına açık hale gelebilirsin.
6. 🧩 GSSAPI Authentication'ı Kapat (Kullanılmıyorsa)
Ubuntu ve RHEL gibi bazı dağıtımlar, varsayılan olarak GSSAPIAuthentication’ı aktif eder. Bu da her bağlantıda 1–3 saniyelik gecikme yaratır.
Kullanmıyorsan kapat:
İstemci tarafı:
Host *
GSSAPIAuthentication noSunucu tarafı:
# /etc/ssh/sshd_config
GSSAPIAuthentication no💨 SSH bağlantıları birkaç saniye daha hızlı açılır.
7. 🔑 Daha Hızlı Anahtar Tipi Kullan (ed25519)
Yeni nesil ed25519 anahtarları hem daha güvenli hem de daha hızlı.
Yeni anahtar oluştur:
ssh-keygen -t ed25519 -C "[email protected]"Sonra ~/.ssh/config’e ekle:
Host *
IdentityFile ~/.ssh/id_ed25519⚙️ Özellikle sık sık SSH bağlantısı kuran CI/CD süreçlerinde fark yaratır.
8. 🚚 scp Yerine rsync Kullan
Bu doğrudan bir konfig ayarı değil ama dosya transferinde devrim yaratır.
Örnek:
rsync -avz -e "ssh -T -o Compression=yes -x" ./app/ user@host:/opt/app/Açıklama:
-a: Dosya izinlerini korur-v: Ayrıntılı çıktı verir-z: Transfer sırasında sıkıştırır-T: Pseudo-TTY’yi kapatır-x: X11 forwarding’i devre dışı bırakır
📈 Büyük ve tekrar eden transferlerde scp’ye göre 10 kata kadar daha hızlı olabilir.
🎯 Özet: SSH’yi Optimize Etmek İçin Temel Ayar
Aşağıdaki ayarları ~/.ssh/config dosyana ekleyerek genel bir hız ve güvenlik artışı elde edebilirsin:
Host *
ControlMaster auto
ControlPath ~/.ssh/cm-%r@%h:%p
ControlPersist 5m
Compression yes
ServerAliveInterval 60
ServerAliveCountMax 3
Ciphers [email protected],[email protected]
GSSAPIAuthentication no
TCPKeepAlive yes
IdentityFile ~/.ssh/id_ed25519💬 Sonuç
SSH çoğu zaman farkında olmadan kullandığımız bir araç, ama birkaç küçük dokunuşla:
Deploy sürelerini saniyeler kısaltabilir,
Kopmaları önleyebilir,
Dosya transferlerini hızlandırabilir,
Otomasyonlarını daha güvenilir hale getirebilirsin.
Last updated
Was this helpful?