Bir sunucuyu yönetmek için artık onun başında oturmak gerekmiyor. SSH, bilgisayarınızla uzaktaki bir sunucu arasındaki tüm trafiği şifreleyerek dünyanın herhangi bir yerinden güvenli bir bağlantı kurmanızı sağlıyor. Bu yazıda parola ile girişten anahtar tabanlı kimlik doğrulamaya, dosya transferinden SSH tünellemesine kadar günlük işte kullanacağınız komutları örneklerle ele alıyoruz; amaç "SSH nedir" sorusunun ötesine geçip pratiğe inmek.
SSH ile bağlanmak tek bir komuttan ibarettir, ama güvenli bir SSH kurulumu birkaç ayarı doğru yapmayı gerektirir. Bu rehber ikisini de kapsıyor.
SSH ile temel bağlantı
Bir sunucuya SSH ile bağlanmak için terminale tek satırlık bir komut yazmanız yeterlidir; kullanıcı adını, sunucu adresini ve gerekirse özel bir portu bu komutta belirtirsiniz.
ssh kullanici@sunucu-ip-adresi
ssh -p 2222 kullanici@sunucu-ip-adresi
İlk bağlantıda terminal, sunucunun "fingerprint" değerini gösterip onayınızı ister; bu, ilk kez gördüğünüz bir sunucunun kimliğini doğrulamanın yoludur. Onayladıktan sonra bu bilgi ~/.ssh/known_hosts dosyasına kaydedilir ve sunucunun anahtarı değişmediği sürece bir daha sorulmaz.
Bağlantı parola ister; doğru parolayı girdiğinizde uzak sunucunun terminaline düşersiniz. Buradan itibaren çalıştırdığınız her komut yerel bilgisayarınızda değil, o uzak makinede çalışır.
Bir komutu uzak sunucuda çalıştırıp sonucunu doğrudan yerel terminalinize almak isterseniz, oturum açmadan tek satırda da çalıştırabilirsiniz:
ssh kullanici@sunucu "df -h && uptime"
Bu komut, sunucuya her seferinde tam oturum açmadan disk kullanımı veya çalışma süresi gibi hızlı kontroller yapmak istediğinizde zaman kazandırır.
SSH anahtarı oluşturma ve kullanma
Parola yerine SSH anahtarı kullanmak hem daha güvenlidir hem daha pratiktir; her bağlantıda parola yazmanız gerekmez. Anahtar çiftini oluşturmak tek komutla yapılır.

ssh-keygen -t ed25519 -C "[email protected]"
Bu komut ~/.ssh/id_ed25519 (özel anahtar) ve ~/.ssh/id_ed25519.pub (genel anahtar) dosyalarını oluşturur. ed25519 algoritması, eski rsa algoritmasına göre hem daha hızlıdır hem de eşdeğer güvenlik için daha kısa bir anahtar kullanır; yeni kurulumlarda bu yüzden tercih edilir.
Anahtar oluştururken bir parola (passphrase) girmeniz istenir. Bunu boş bırakmak mümkündür ama önerilmez, çünkü özel anahtar dosyanız çalınırsa parola olmadan doğrudan kullanılabilir hale gelir. ssh-agent çalıştırıp anahtarı bir kez eklerseniz, her bağlantıda bu parolayı yeniden girmek zorunda kalmazsınız.
Genel anahtarı sunucuya kopyalamak için ssh-copy-id aracı kullanılır:
ssh-copy-id kullanici@sunucu-ip-adresi
Bu komuttan sonra ssh kullanici@sunucu-ip-adresi yazdığınızda parola sorulmaz; özel anahtarınız kimliğinizi otomatik doğrular. Özel anahtarı hiç kimseyle paylaşmamak esastır. Genel anahtar ise paylaşılabilir, çünkü onunla tek başına hiçbir yere giriş yapılamaz.
SSH sunucu ayarlarını sıkılaştırmak
Sunucu tarafındaki /etc/ssh/sshd_config dosyası, kimin ve nasıl bağlanabileceğini belirler. Parola tabanlı girişi kapatmak, en yaygın saldırı yöntemlerinden birini tamamen ortadan kaldırır.
PasswordAuthentication no
PermitRootLogin no
Port 2222
PermitRootLogin no ayarı, root kullanıcısının doğrudan SSH ile giriş yapmasını engeller; yönetici işlemleri için önce normal bir kullanıcıyla bağlanıp sudo kullanmanız gerekir. Port 2222 gibi standart olmayan bir port seçmek tek başına güvenlik sağlamaz, ama otomatik tarama botlarının büyük bölümünü eler.
Bu üç ayarı birlikte uyguladığınızda sunucunuz en yaygın saldırı türlerine karşı belirgin biçimde sertleşir:
- Parola girişini tamamen kapatıp yalnızca anahtarla girişe izin vermek
- Root kullanıcısının doğrudan bağlanmasını engellemek
- Varsayılan 22 portu yerine farklı bir port kullanmak
Değişiklikleri kaydettikten sonra servisi yeniden başlatmadan önce mevcut bağlantınızı kapatmayın; yeni ayar hatalıysa sunucuya bir daha erişemeyebilirsiniz.
sudo systemctl restart sshd
İkinci bir terminal penceresi açıp yeni ayarlarla bağlanmayı deneyin. Bağlantı başarılıysa ilk pencereyi kapatabilirsiniz. Bu iki pencereli kontrol, bir yapılandırma hatasında kendinizi sunucudan dışarıda bırakmamanın basit ama işe yarayan bir yoludur.
SCP ve rsync ile dosya transferi
SSH altyapısı üzerinde çalışan scp, dosyaları yerel makine ile uzak sunucu arasında hızlıca kopyalamanızı sağlar.

scp yerel-dosya.txt kullanici@sunucu:/home/kullanici/
scp -r yerel-klasor/ kullanici@sunucu:/home/kullanici/hedef/
-r bayrağı bir klasörü içeriğiyle birlikte özyinelemeli olarak kopyalar. Büyük dosya kümelerinde veya tekrarlayan senkronizasyonlarda rsync daha verimlidir, çünkü yalnızca değişen kısımları aktarır.
rsync -avz --progress yerel-klasor/ kullanici@sunucu:/home/kullanici/hedef/
-a bayrağı dosya izinlerini ve zaman damgalarını korur, -z aktarım sırasında veriyi sıkıştırır, --progress ilerlemeyi ekrana yazdırır. Bir yedekleme betiğini scp yerine rsync üzerine kurmak hem bant genişliğinden tasarruf sağlar hem de kesintiye uğrayan transferleri kaldığı yerden devam ettirir.
SSH tüneli ve port yönlendirme
SSH yalnızca terminal erişimi sağlamaz, güvenli bir tünel de kurar. Yerel port yönlendirme, uzak sunucudaki bir hizmete (örneğin yalnızca localhost'tan erişilebilen bir veritabanına) yerel makinenizden erişmenizi sağlar.

ssh -L 3307:localhost:3306 kullanici@sunucu-ip-adresi
Bu komut çalıştıktan sonra yerel makinenizde localhost:3307 adresine bağlanan herhangi bir araç, aslında uzak sunucudaki 3306 portunda çalışan MySQL'e SSH tüneli üzerinden bağlanır. Veritabanı portunu doğrudan internete açmadan, yönetim aracınızdan güvenli biçimde erişmenin pratik bir yoludur.
Dinamik port yönlendirme ise SSH bağlantısını bir SOCKS proxy'sine dönüştürür:
ssh -D 1080 kullanici@sunucu-ip-adresi
Tarayıcınızı localhost:1080 üzerinden SOCKS proxy kullanacak şekilde ayarladığınızda tüm tarayıcı trafiğiniz şifreli SSH tüneli üzerinden geçer. Halka açık bir kafe veya havalimanı ağından bağlanırken bu yöntem, ek bir VPN uygulaması kurmadan trafiğinizi şifreli bir kanaldan geçirmenin hızlı bir yoludur.
SSH yapılandırma dosyasıyla kısayollar
Sık bağlandığınız sunucular için her seferinde uzun komutlar yazmak yerine ~/.ssh/config dosyasına takma adlar tanımlayabilirsiniz.
Host uretim
HostName 203.0.113.42
User deploy
Port 2222
IdentityFile ~/.ssh/id_ed25519
Host test-sunucu
HostName 198.51.100.17
User admin
Port 22
Bu dosyayı kaydettikten sonra ssh uretim yazmanız, yukarıdaki tüm parametreleri otomatik uygulamaya yeter. Onlarca sunucuyla çalışan bir ekip için bu dosya, kullanıcı adı ve port numaralarını ezberleme derdini ortadan kaldırır.
~/.ssh/config dosyasına ServerAliveInterval 60 eklemek, uzun süre işlem yapmadığınızda bağlantının otomatik kopmasını önler; SSH istemcisi her 60 saniyede bir sunucuya "hâlâ buradayım" sinyali gönderir. Bu ayar, uzun süren komutları arka planda bırakıp ara sıra kontrol ettiğiniz oturumlarda özellikle işe yarar. ~/.ssh/config dosyasını özel anahtar bilgisi olmadan, yalnızca Host, HostName ve Port satırlarıyla takım deposunda paylaşmak, yeni katılan bir ekip üyesinin sunucu listesini tek dosyayı kopyalayarak almasını sağlar.
Sık karşılaşılan SSH hataları
Permission denied (publickey) hatası genellikle özel anahtarınızın sunucudaki genel anahtarla eşleşmediğini veya PasswordAuthentication no ayarı açıkken anahtar kaydının yapılmadığını gösterir. ssh -v kullanici@sunucu komutuyla ayrıntılı çıktı alarak hangi adımda başarısız olduğunuzu görebilirsiniz.
Connection refused hatası, SSH servisinin çalışmadığını veya farklı bir portta dinlediğini gösterir; sudo systemctl status sshd ile servis durumunu kontrol edin. Host key verification failed hatası ise sunucunun anahtarı değiştiğinde ortaya çıkar; sunucuyu yeniden kurduysanız ~/.ssh/known_hosts dosyasından ilgili satırı silmeniz gerekir.
Connection timed out hatası genellikle bir güvenlik duvarının SSH portunu engellediğini gösterir; sunucu sağlayıcınızın güvenlik grubu veya ufw ayarlarını kontrol etmek çoğu zaman sorunu çözer. Bu hataların hepsinde ortak bir nokta var. -v bayrağıyla ayrıntılı günlük almak, sorunun kaynağını dakikalar içinde ortaya çıkarır.
SSH protokolü ve güvenlik en iyi uygulamaları hakkında ayrıntılı teknik referansa OpenSSH resmi belgeleri üzerinden ulaşabilirsiniz.
Kaynaklar ve doğrulama
Bilgileri uygulamadan önce güncel ayrıntıları aşağıdaki birincil veya alan otoritesi kaynaklardan kontrol edin.
Henüz yorum yok.
Sohbete katıl. Yorumlar yayınlanmadan önce moderasyondan geçer.