SSH ile sunucuya bağlanma tek bir komutla yapılır: ssh kullanici@sunucu-ip. SSH (Secure Shell), uzaktaki bir sunucunun komut satırına şifreli bir kanal üzerinden erişmenizi sağlayan protokoldür ve Linux sunucu yönetiminin temelidir. Varsayılan portu 22/TCP’dir; sunucunuz farklı bir port kullanıyorsa -p parametresiyle belirtirsiniz.
Bu rehberde Windows, macOS ve Linux’tan bağlanmayı, PuTTY kullanımını, SSH anahtarı üretip şifresiz girişe geçmeyi, dosya aktarımını ve en sık karşılaşılan bağlantı hatalarının çözümünü bulacaksınız. Sunucunuzu yeni aldıysanız bağlandıktan sonraki adımlar için VDS ilk ayarlar sayfasına geçin.
SSH Nasıl Çalışır?#
SSH iki katmanlı bir yapı kurar. Önce istemci ile sunucu arasında şifreli bir kanal oluşturulur, sonra bu kanalın içinde kimlik doğrulaması yapılır. Kimlik doğrulaması iki yöntemden biriyle olur:
- Parola: Kurulum kolaydır ama kaba kuvvet saldırılarına açıktır. Üretim sunucularında tercih edilmemeli.
- Genel/özel anahtar çifti: Özel anahtar sizin bilgisayarınızda kalır, genel anahtar sunucuya yüklenir. Tahmin edilemez, çok daha güvenlidir.
İlk bağlantıda sunucunun genel anahtarının parmak izi size gösterilir ve onayınız istenir. Onayladığınızda parmak izi ~/.ssh/known_hosts dosyasına kaydedilir. Sonraki bağlantılarda bu değer değişirse SSH sizi uyarır; bu uyarı, araya girme girişimlerine karşı en önemli korumadır.
ssh-keygen -R 203.0.113.10. Bu uyarıyı beklemiyorsanız bağlantıyı kurmayın ve sağlayıcınıza danışın.Terminalden İlk Bağlantı#
Windows 10 ve 11’de, macOS’ta ve tüm Linux dağıtımlarında SSH istemcisi hazır gelir. Ek bir program kurmadan bağlanabilirsiniz.
# Standart bağlantı
ssh root@203.0.113.10
# Farklı port
ssh -p 2222 batihost@203.0.113.10
# Belirli bir anahtar dosyasıyla
ssh -i ~/.ssh/batihost_key batihost@203.0.113.10
# Ayrıntılı çıktı (sorun ayıklama için)
ssh -vvv batihost@203.0.113.10
Windows PowerShell’de aynı komutlar birebir çalışır. Bağlantı başarılıysa sunucunun komut istemi karşınıza gelir ve artık komutlarınız uzaktaki makinede çalışır.
-
PuTTY (SSH istemcisi + PuTTYgen)Önerilenİndir
-
WinSCP (SFTP / SCP dosya aktarımı)İndir
-
FileZilla Client (çapraz platform SFTP)İndir
-
Windows Terminal (çok sekmeli terminal)İndir
Bağlantılar resmî kaynaklara gider. SSH istemcisini üçüncü taraf sitelerden indirmeyin; değiştirilmiş sürümler girdiğiniz parolayı sızdırabilir.
PuTTY ile Bağlanma#
-
Oturum bilgilerini girin#
PuTTY’yi açın. Host Name (or IP address) alanına sunucunun IP adresini, Port alanına SSH portunu yazın. Connection type olarak SSH seçili olmalı.
-
Oturumu kaydedin#
Saved Sessions alanına bir isim yazıp Save’e basın. Bir dahaki sefere isme çift tıklamanız yeterli olur.
-
Kopmaları önleyin#
Sol menüden Connection bölümüne gidin, Seconds between keepalives değerini 60 yapın. Boş kalan bağlantıların düşmesini engeller.
-
Anahtar kullanacaksanız tanımlayın#
Connection > SSH > Auth > Credentials bölümünden PuTTYgen ile ürettiğiniz
.ppkdosyasını seçin. -
Bağlanın#
Open’a tıklayın. İlk bağlantıda sunucu parmak izi onayı istenir; Accept diyerek kaydedin ve kullanıcı adınızla giriş yapın.
SSH Anahtarı Oluşturma ve Şifresiz Giriş#
Parola girişini kapatıp anahtara geçmek, sunucu güvenliğinde yapabileceğiniz en etkili tek değişikliktir. Anahtarı kendi bilgisayarınızda üretin, sunucuda değil.
# Modern ve önerilen algoritma
ssh-keygen -t ed25519 -C "batihost-vds-2026"
# Eski sistemlerle uyum gerekiyorsa
ssh-keygen -t rsa -b 4096 -C "batihost-vds-2026"
# Üretilen dosyalar:
# ~/.ssh/id_ed25519 -> özel anahtar (asla paylaşmayın)
# ~/.ssh/id_ed25519.pub -> genel anahtar (sunucuya yüklenir)
Anahtarı sunucuya yükleyin:
# En kolay yol
ssh-copy-id -p 2222 batihost@203.0.113.10
# ssh-copy-id yoksa elle
cat ~/.ssh/id_ed25519.pub | ssh batihost@203.0.113.10 \
"mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
# Test edin: parola sormadan girmeli
ssh batihost@203.0.113.10
Windows’ta PuTTYgen ile anahtar üretme#
PuTTY paketiyle gelen PuTTYgen’i açın, anahtar türü olarak EdDSA (Ed25519) seçin ve Generate’a basın. Fare imlecini pencerede gezdirerek rastgelelik üretin. Ardından:
- Üstteki kutuda görünen genel anahtar metnini kopyalayıp sunucudaki
~/.ssh/authorized_keysdosyasına yapıştırın. - Save private key ile
.ppkdosyasını güvenli bir yere kaydedin. - PuTTY oturumunuzda bu
.ppkdosyasını tanımlayın.
SSH Yapılandırma Dosyasıyla Hayatı Kolaylaştırma#
Sık bağlandığınız sunucuları ~/.ssh/config dosyasında takma adlarla tanımlayabilirsiniz. Bu dosya Windows’ta C:\Users\KullaniciAdi\.ssh\config yolundadır.
Host web01
HostName 203.0.113.10
User batihost
Port 2222
IdentityFile ~/.ssh/id_ed25519
ServerAliveInterval 60
ServerAliveCountMax 3
Host oyun
HostName 203.0.113.25
User minecraft
Port 22
IdentityFile ~/.ssh/id_ed25519
Host *
AddKeysToAgent yes
Compression yes
Bu tanımdan sonra ssh web01 yazmanız yeterlidir. scp ve rsync de aynı takma adları kullanır.
Dosya Aktarımı: scp, sftp ve rsync#
| Araç | Güçlü yanı | Ne zaman kullanılır |
|---|---|---|
scp | Basit, tek komut | Tek dosya, hızlı aktarım |
sftp | Etkileşimli oturum | Dizinde gezinerek dosya seçmek |
rsync | Fark aktarımı, devam ettirme | Büyük klasörler, yedekleme, taşıma |
| WinSCP / FileZilla | Grafik arayüz | Sürükle-bırak ile çalışmayı sevenler |
# Tek dosya gönderme
scp -P 2222 yedek.tar.gz batihost@203.0.113.10:/home/batihost/
# Sunucudan dosya çekme
scp -P 2222 batihost@203.0.113.10:/var/log/syslog ./
# Klasör aktarma (rsync, ilerleme çubuğuyla)
rsync -avz --progress -e "ssh -p 2222" ./site/ batihost@203.0.113.10:/var/www/site/
# Etkileşimli SFTP oturumu
sftp -P 2222 batihost@203.0.113.10
Rsync’in en değerli özelliği, yalnızca değişen dosyaları göndermesidir. Bir sunucudan diğerine taşıma yaparken bu, saatler kazandırır; yöntemin taşıma senaryosundaki kullanımını sunucu taşıma rehberinde anlattık.
SSH Sunucusunu Sıkılaştırma#
Sunucu tarafındaki yapılandırma /etc/ssh/sshd_config dosyasındadır. Aşağıdaki ayarlar üretim sunucuları için makul bir taban oluşturur:
Port 2222
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
PermitEmptyPasswords no
MaxAuthTries 3
MaxSessions 5
LoginGraceTime 30
ClientAliveInterval 300
ClientAliveCountMax 2
X11Forwarding no
AllowUsers batihost deploy
# Sözdizimini kontrol edin, sonra servisi yeniden başlatın
sudo sshd -t
sudo systemctl restart ssh
sudo systemctl status ssh
# Yeni portu güvenlik duvarında açın
sudo ufw allow 2222/tcp comment 'SSH'
sudo ufw delete allow 22/tcp
Başarısız giriş denemelerini otomatik engellemek için Fail2Ban kurun; kurulumu ve kural yazımı güvenlik duvarı rehberinde anlatılıyor. Kimlerin giriş yaptığını görmek için:
# Başarılı girişler
last -a | head -20
# Başarısız denemeler
sudo grep "Failed password" /var/log/auth.log | tail -20
# Şu an bağlı kullanıcılar
who -a
Yaygın SSH Hataları ve Çözümleri#
| Hata | Sebep | Çözüm |
|---|---|---|
| Connection refused | SSH servisi çalışmıyor veya port yanlış | Doğru portu kullanın, sunucuda systemctl status ssh kontrol edin |
| Connection timed out | Güvenlik duvarı engelliyor veya sunucu kapalı | Portu açın, sağlayıcı panelinden sunucu durumunu kontrol edin |
| Permission denied (publickey) | Anahtar tanınmıyor | authorized_keys içeriğini ve izinleri kontrol edin |
| Permission denied (password) | Yanlış parola veya parola girişi kapalı | Kullanıcı adını doğrulayın, anahtarla girmeyi deneyin |
| Host key verification failed | Sunucu anahtarı değişmiş | Beklenen bir değişimse ssh-keygen -R ip ile eski kaydı silin |
| Too many authentication failures | Ajan çok fazla anahtar deniyor | ssh -o IdentitiesOnly=yes -i anahtar ile tek anahtar kullanın |
| Broken pipe | Boşta kalan bağlantı düştü | ServerAliveInterval 60 ekleyin |
Sorunun kaynağını bulamıyorsanız ayrıntılı çıktı alın: ssh -vvv kullanici@ip. Çıktıda hangi kimlik doğrulama yönteminin denendiği ve nerede reddedildiği açıkça görünür.
İleri Seviye Kullanım#
Uzun süren işleri koparmadan çalıştırma#
Bağlantınız koptuğunda çalıştırdığınız komut da durur. Uzun işlerde screen veya tmux kullanın:
# Yeni bir screen oturumu başlat
screen -S kurulum
# Oturumdan ayrıl (iş çalışmaya devam eder): Ctrl+A sonra D
# Geri dön
screen -r kurulum
# tmux karşılığı
tmux new -s kurulum
tmux attach -t kurulum
Bu araçların oyun sunucusu yönetimindeki kullanımını screen ve tmux rehberinde bulabilirsiniz.
SSH tüneli ile yerel erişim#
Sunucuda yalnızca localhost’a açık bir servis varsa (örneğin bir veritabanı yönetim arayüzü), tünel açarak kendi bilgisayarınızdan erişebilirsiniz:
# Sunucudaki 3306 portunu yerel 13306'ya bağla
ssh -L 13306:127.0.0.1:3306 batihost@203.0.113.10
# Artık kendi bilgisayarınızda 127.0.0.1:13306 adresi
# sunucudaki MySQL'e gider
Bu yöntem, veritabanı portunu internete açmadan yönetmenin en güvenli yoludur.
Komutu bağlanmadan çalıştırma#
# Tek komut çalıştırıp çık
ssh batihost@203.0.113.10 "df -h; uptime"
# Betik dosyasını uzaktan çalıştır
ssh batihost@203.0.113.10 'bash -s' < yerel-betik.sh
Özetle#
SSH bağlantısı ssh kullanici@sunucu-ip komutuyla kurulur ve Linux sunucu yönetiminin tamamı bu kanal üzerinden yapılır. Windows 10 ve 11’de istemci yerleşiktir; grafik arayüz isteyenler PuTTY, dosya aktarımı isteyenler WinSCP veya FileZilla kullanabilir.
Güvenlik tarafında yapılacak en önemli şey parola girişinden anahtar tabanlı kimlik doğrulamaya geçmektir: ssh-keygen -t ed25519 ile anahtar üretin, ssh-copy-id ile yükleyin, çalıştığını doğruladıktan sonra PasswordAuthentication no yapın. Portu değiştirin, root girişini kapatın ve Fail2Ban kurun. Sık kullandığınız sunucuları ~/.ssh/config dosyasında tanımlayarak günlük işinizi kısaltın. Sunucunuzun geri kalan yapılandırması için VDS ilk ayarlar kontrol listesini tamamlayın.