Tüm barındırma hizmetlerinde 15% tasarruf edin

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın: Skills Başlayın
Bölüm
Güvenlik Linux Sanal Sunucular

SSH on Virtual Hosting: Sanal Barındırmada Güvenli Sunucu Yönetiminin Tam Rehberi

Secure Shell (SSH), herhangi bir sistem yöneticisinin araç setindeki en güçlü ve temel araçlardan biridir. Küçük bir kişisel proje yönetip yönetmediğiniz veya üretim web uygulaması çalıştırıyor olsanız da, SSH size şifreli, kimlik doğrulamalı, uzaktan sunucu erişimi sağlar — fiziksel makineye hiç dokunmadan komut yürütmenize, dosya aktarmanıza ve hizmetleri yapılandırmanıza olanak tanır.

Bu kapsamlı rehber, sanal barındırma ortamında SSH ile çalışmak hakkında bilmeniz gereken her şeyi kapsar: ilk bağlantınızdan brute-force saldırılarına karşı kurulumunuzu sağlamlaştırmaya kadar.

1. SSH Nedir ve Neden Önemlidir?

SSH (Secure Shell), yerel makineniz (istemci) ile uzak bir sunucu arasında şifreli bir tünel oluşturan bir kriptografik ağ protokolüdür. Telnet veya FTP gibi eski protokollerin aksine, SSH tüm trafiği — kimlik bilgileri dahil — şifreler ve bu da bir saldırganın aktarım sırasında hassas verileri ele geçirmesini neredeyse imkansız hale getirir.

SSH şu amaçlar için standart yöntemdir:

  • Uzak komut satırı erişimi — sunucunuzda herhangi bir Linux/Unix komutunu, sanki önünde oturuyormuşsunuz gibi çalıştırın
  • Güvenli dosya transferleri — SCP veya SFTP kullanarak makineler arasında dosya taşıyın
  • Tünel oluşturma ve port yönlendirme — diğer protokolleri SSH bağlantısı üzerinden güvenli bir şekilde yönlendirin
  • Otomatik dağıtımlar ve betikler — CI/CD boru hatları, cron işleri ve yedekleme betikleri hepsi SSH’ye dayanır
  • Web sunucuları ve uygulamaları yönetme — Nginx, Apache, MySQL ve daha fazlasını yapılandırın

Bir VPS Hosting planı veya bir Dedicated Server çalıştırıyorsanız, SSH neredeyse kesinlikle günlük yönetim için birincil arayüzünüzdür.

2. Bağlantı Kurmadan Önce Ön Koşullar

İlk SSH bağlantınızı kurmadan önce, aşağıdakilere sahip olduğunuzdan emin olun:

GereksinimAyrıntılar
Sunucu IP adresiHosting kontrol panelinizde veya hoş geldiniz e-postasında sağlanır
SSH kullanıcı adıYeni bir VPS için genellikle root, veya yönetilen ortamlarda özel bir kullanıcı
SSH şifresi veya anahtarıSağlama sırasında ayarlanır veya e-posta yoluyla gönderilir
SSH istemcisiLinux/macOS’ta yerleşik; Windows’ta PuTTY veya Windows Terminal
SSH portuVarsayılan 22 olup, güvenlik için özelleştirilebilir

> Not: Paylaşılan Web Hosting planında iseniz, SSH erişimi kısıtlanmış olabilir veya kontrol panelinizde açık etkinleştirme gerektirebilir. Sağlayıcınıza danışın.

3. SSH Aracılığıyla Sunucunuza Nasıl Erişilir

Adım 1: Terminal veya SSH İstemcinizi Açın

  • Linux / macOS: Yerleşik Terminal uygulamasını açın
  • Windows 10/11: Windows Terminal, PowerShell veya Command Prompt kullanın (hepsi yerel SSH istemcisi içerir)
  • Windows (eski sürüm): Ücretsiz SSH istemcisi olarak PuTTY indirin

Adım 2: Sunucunuza Bağlanın

Aşağıdaki söz dizimini kullanın:

ssh username@your_server_ip

Örnek:

ssh root@203.0.113.45

Sunucunuz standart olmayan bir bağlantı noktası kullanıyorsa (daha sonra neden değiştirmeniz gerektiği hakkında daha fazla bilgi), bunu -p bayrağıyla belirtin:

ssh username@your_server_ip -p 2222

Adım 3: Host Parmak İzini Doğrulayın

Yeni bir sunucuya ilk kez bağlandığınızda, SSH şöyle bir ileti görüntüleyecektir:

The authenticity of host '203.0.113.45 (203.0.113.45)' can't be established.
ED25519 key fingerprint is SHA256:abc123...
Are you sure you want to continue connecting (yes/no/[fingerprint])?

yes yazın ve Enter tuşuna basın. SSH, sunucunun parmak izini ~/.ssh/known_hosts dosyanıza kaydedecektir. Gelecekteki bağlantılarda, sunucunun kimliğini otomatik olarak doğrulayacak — herhangi bir değişiklik olursa sizi uyaracaktır (bu, ortadaki adam saldırısını gösterebilir).

Adım 4: Kimlik Doğrulaması Yapın

İstendiğinde parolanızı girin. Terminal’in yazarken herhangi bir karakter göstermeyeceğini unutmayın — bu güvenlik nedenleriyle normal davranıştır.

Kimlik doğrulaması yapıldıktan sonra, sunucunuzun komut istemini göreceksiniz, tipik olarak şöyle bir şey:

root@hostname:~#

Artık bağlı olduğunuz ve sunucunuzu yönetmeye başlayabileceğiniz durumdasınız.

4. Sunucu Yönetimi için Temel SSH Komutları

Bağlandıktan sonra, Linux komut satırına tam erişiminiz vardır. Sanal barındırma ortamını yönetmek için en önemli komutlar şunlardır:

Dosya ve Dizin İşlemleri

# List files and directories with details
ls -la

# Change to a specific directory
cd /var/www/html

# Create a new directory
mkdir my_project

# Remove a file
rm filename.txt

# Remove a directory and its contents
rm -rf /path/to/directory

# Copy a file
cp source.txt destination.txt

# Move or rename a file
mv oldname.txt newname.txt

Dosyaları Görüntüleme ve Düzenleme

# View file contents
cat /etc/nginx/nginx.conf

# View large files page by page
less /var/log/nginx/access.log

# Edit a file with nano (beginner-friendly)
nano /etc/ssh/sshd_config

# Edit a file with vim (advanced)
vim /etc/nginx/sites-available/default

Sistem İzleme

# Check disk usage (human-readable)
df -h

# Check memory usage
free -m

# Real-time process monitor
top

# Enhanced process monitor (install if needed)
htop

# Check running services
systemctl status nginx

# View recent system logs
journalctl -xe

Paket Yönetimi (Ubuntu/Debian)

# Update package list
sudo apt update

# Upgrade installed packages
sudo apt upgrade -y

# Install a package
sudo apt install package-name

# Remove a package
sudo apt remove package-name

Ağ Tanılaması

# Check open ports and listening services
ss -tulnp

# Test connectivity to a host
ping google.com

# Trace the network route to a host
traceroute google.com

# Check your server's public IP
curl ifconfig.me

5. SSH Yapılandırmanızı Güçlendirme

Varsayılan SSH yapılandırması işlevseldir ancak optimal düzeyde güvenli değildir. SSH internete açık olduğundan, otomatik brute-force saldırılarının sürekli hedefidir. Aşağıdaki adımlar saldırı yüzeyinizi önemli ölçüde azaltır.

Tüm değişiklikler SSH daemon yapılandırma dosyasında yapılır:

sudo nano /etc/ssh/sshd_config

Herhangi bir değişiklik yaptıktan sonra, her zaman SSH hizmetini yeniden yükleyin:

sudo systemctl reload sshd

> ⚠️ Kritik Uyarı: SSH yapılandırmasında değişiklik yapmadan önce, her zaman ikinci bir terminal oturumunu açık tutun ve bağlı kalın. SSH’yi yanlış yapılandırırsanız ve erişimi kaybederseniz, kurtarmak için barındırma sağlayıcınızın acil durum konsolunu kullanmanız gerekebilir.

Adım 1: Varsayılan SSH Portunu Değiştirin

Port 22 varsayılan SSH portu olup, otomatik botlar tarafından sürekli taranır. Bunu yüksek, standart olmayan bir porta değiştirmek kararlı bir saldırganı durdurmaz, ancak otomatik taramalardan kaynaklanan gürültüyü önemli ölçüde azaltır.

/etc/ssh/sshd_config içinde bulun ve değiştirin:

# Before:
#Port 22

# After:
Port 2222

# öğesini kaldırarak satırı açıklamadan çıkarın ve seçtiğiniz portu ayarlayın (1024 ile 65535 arasında zaten kullanımda olmayan herhangi bir sayı kullanın).

Önemli: Bir güvenlik duvarı çalıştırıyorsanız (ve çalıştırmalısınız), SSH’yi yeniden yüklemeden önce yeni portu izin verin:

# UFW (Ubuntu/Debian)
sudo ufw allow 2222/tcp
sudo ufw deny 22/tcp

# firewalld (CentOS/RHEL)
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --reload

Adım 2: Root Girişini Devre Dışı Bırakın

SSH üzerinden doğrudan root olarak giriş yapmak önemli bir güvenlik riskidir. Bunun yerine, normal bir kullanıcı hesabı oluşturun ve yönetim görevleri için sudo kullanın.

/etc/ssh/sshd_config içinde:

# Before:
PermitRootLogin yes

# After:
PermitRootLogin no

Root girişini devre dışı bırakmadan önce, aşağıdakilere sahip olduğunuzdan emin olun:

  1. Root olmayan bir kullanıcı oluşturdum: adduser myuser
  2. Sudo ayrıcalıkları verildi: usermod -aG sudo myuser
  3. Bu kullanıcı olarak ayrı bir oturumda giriş yapabileceğinizi doğruladı

Adım 3: Giriş Denemelerini Sınırlayın

Brute-force etkinliğini azaltmak için bu yönergeleri ekleyin:

# Maximum authentication attempts per connection
MaxAuthTries 3

# Maximum concurrent unauthenticated connections
MaxStartups 10:30:60

# Disconnect idle sessions after 5 minutes
ClientAliveInterval 300
ClientAliveCountMax 2

Adım 4: SSH Erişimini Belirli Kullanıcılarla Sınırlayın

Yalnızca belirli kullanıcıların SSH erişimine ihtiyacı varsa, bunları açıkça beyaz listeye alın:

AllowUsers myuser deployuser

Adım 5: SSH Anahtarları Ayarlandıktan Sonra Parola Kimlik Doğrulamasını Devre Dışı Bırakın

SSH anahtar kimlik doğrulaması yapılandırıldıktan sonra (sonraki bölüme bakın), parola tabanlı girişi tamamen devre dışı bırakın:

PasswordAuthentication no
ChallengeResponseAuthentication no

Bu tek değişiklik, parola brute-force saldırılarının tüm sınıfını ortadan kaldırır.

6. SSH Key Authentication: The Right Way to Log In

SSH anahtarları kriptografik anahtar çiftleridir — yerel makinenizde kalan özel anahtar ve sunucuda bulunan genel anahtar. Kimlik doğrulama, özel anahtarı hiçbir zaman iletmeden sahip olduğunuzu kanıtlayarak çalışır. Bu, parolalardan çok daha güvenlidir.

Adım 1: SSH Anahtar Çifti Oluşturun

Bunu yerel makinenizde çalıştırın (sunucuda değil):

ssh-keygen -t ed25519 -C "your_email@example.com"

> Neden Ed25519? Eski RSA algoritmasından daha hızlı ve daha güvenlidir. Sisteminiz bunu desteklemiyorsa, bunun yerine ssh-keygen -t rsa -b 4096 kullanın.

Sizden şunlar istenecektir:

  • Dosya konumu seçin — varsayılanı kabul etmek için Enter tuşuna basın (~/.ssh/id_ed25519)
  • Bir parola belirleyin — kesinlikle önerilir; bu, özel anahtarınızı çalınırsa işe yaramaz hale getirir

Bu iki dosya oluşturur:

    ~/.ssh/id_ed25519 — özel anahtarınız (bunu asla paylaşmayın)
    ~/.ssh/id_ed25519.pub — genel anahtarınız (bu sunucuya gider)
    
    Adım 2: Genel Anahtarı Sunucunuza Kopyalayın
    En kolay yöntem:
    ssh-copy-id username@your_server_ip
    Veya ssh-copy-id mevcut değilse manuel olarak:
    # On your local machine, display your public key:
    cat ~/.ssh/id_ed25519.pub
    
    # On the server, add it to the authorized keys file:
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    echo "your_public_key_content" >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
    Adım 3: SSH Anahtarınızı Kullanarak Bağlanın
    # Standard port
    ssh username@your_server_ip
    
    # Custom port
    ssh username@your_server_ip -p 2222
    SSH anahtarınızı otomatik olarak kullanacaktır. Bir parola belirlediyseniz, sizden istenecektir (bu sunucu parolanız değil, yerel parolanızdır).
    Adım 4: SSH Config Dosyası ile Bağlantıları Basitleştirin
    Birden fazla sunucuyu yönetiyorsanız, uzun komutlar yazmaktan kaçınmak için bir SSH config dosyası oluşturun:
    nano ~/.ssh/config
    Şöyle girişler ekleyin:
    Host myserver
        HostName 203.0.113.45
        User myuser
        Port 2222
        IdentityFile ~/.ssh/id_ed25519
    
    Host staging
        HostName 203.0.113.100
        User deploy
        Port 22
        IdentityFile ~/.ssh/id_ed25519
    Artık basitçe bağlanabilirsiniz:
    ssh myserver
    7. SCP ve SFTP ile Dosyaları Güvenli Bir Şekilde Aktarma
    SSH, iki güvenli dosya aktarım yöntemini etkinleştirir: hızlı aktarımlar için SCP (Secure Copy Protocol) ve etkileşimli oturumlar için SFTP (SSH File Transfer Protocol).
    SCP — Hızlı Dosya Aktarımları
    Yerel makinenizden sunucuya bir dosya kopyalayın:
    scp /path/to/local/file.txt username@your_server_ip:/path/to/remote/directory/
    Sunucudan yerel makinenize bir dosya kopyalayın:
    scp username@your_server_ip:/path/to/remote/file.txt /path/to/local/directory/
    Tüm bir dizini yinelemeli olarak kopyalayın:
    scp -r /path/to/local/folder username@your_server_ip:/path/to/remote/
    Özel bir bağlantı noktası kullanma:
    scp -P 2222 file.txt username@your_server_ip:/destination/
    > Not: SCP, SSH’nin kullandığı -p (küçük harf) aksine, bağlantı noktası için -P (büyük harf) kullanır.
    SFTP — Etkileşimli Dosya Yönetimi
    SFTP, uzak dosyalara göz atmak ve yönetmek için etkileşimli bir kabuk sağlar:
    sftp username@your_server_ip
    Bağlandıktan sonra, şu komutları kullanın:
    # List remote files
    ls
    
    # List local files
    lls
    
    # Change remote directory
    cd /var/www/html
    
    # Change local directory
    lcd ~/Downloads
    
    # Upload a file
    put localfile.txt
    
    # Download a file
    get remotefile.txt
    
    # Exit
    bye
    Grafik bir SFTP istemcisi için, FileZilla veya Cyberduck gibi araçlar SFTP aracılığıyla bağlanır ve sürükle-bırak arayüzü sağlar — dosya yönetimi için komut satırını kullanmamayı tercih ederseniz ideal.
    8. SSH Sorun Giderme İpuçları
    
    
    
    
    Sorun
    Muhtemel Neden
    Çözüm
    
    
    
    
    Connection refused
    SSH çalışmıyor, yanlış port veya güvenlik duvarı engelleme
    systemctl status sshd kontrol edin, portu doğrulayın, güvenlik duvarı kurallarını kontrol edin
    
    
    Connection timed out
    Güvenlik duvarı bağlantıyı engelliyor
    Güvenlik duvarı kurallarının SSH portunuza izin verdiğini doğrulayın
    
    
    Permission denied (publickey)
    Yanlış anahtar, yanlış kullanıcı veya anahtar yetkili değil
    ~/.ssh/authorized_keys izinlerini kontrol edin; doğru anahtarın kullanıldığını doğrulayın
    
    
    Host key verification failed
    Sunucu parmak izi değişti
    Eski girişi kaldırın: ssh-keygen -R your_server_ip
    
    
    Too many authentication failures
    SSH çok fazla anahtar denedi
    Anahtarı açıkça belirtin: ssh -i ~/.ssh/id_ed25519 user@host
    
    
    Yapılandırma değişikliğinden sonra kilitlendi
    SSH yanlış yapılandırması
    sshd_config düzeltmek için barındırma sağlayıcınızın acil durum/VNC konsolunu kullanın
    
    
    
    
    Hata Ayıklama için Ayrıntılı Modu Etkinleştirin
    Bağlantı sorunlarını giderirken, SSH komutunuza -v (veya maksimum ayrıntı için -vvv) ekleyin:
    ssh -v username@your_server_ip
    Bu, el sıkışma işlemi hakkında ayrıntılı bilgiler çıkarır ve bağlantının tam olarak nerede başarısız olduğunu belirlemenize yardımcı olur.
    9. Sonuç
    SSH, uzak sunucu yönetiminin omurgasıdır. Temel bağlantılardan anahtar tabanlı kimlik doğrulamaya ve yapılandırma sertleştirmesine kadar uzanan SSH’de uzmanlaşmak, sanal barındırma ortamını yöneten herkes için temel bir beceridir.
    Temel en iyi uygulamaları özetlemek gerekirse:
    
    ✅ SSH varsayılan portunu 22’den standart olmayan bir porta değiştirin
    ✅ Root girişini devre dışı bırakın ve sudo ile özel bir root olmayan kullanıcı kullanın
    ✅ Parolalar yerine SSH anahtar kimlik doğrulaması kullanın
    ✅ Anahtarlar yapılandırıldıktan sonra parola kimlik doğrulamasını devre dışı bırakın
    ✅ SSH istemci ve sunucu yazılımınızı güncel tutun
    ✅ Kimlik doğrulama günlüklerini düzenli olarak izleyin: tail -f /var/log/auth.log

    cPanel ile VPS çalıştırıyor olsanız veya çıplak metal Dedicated Server yönetiyor olsanız, bu SSH uygulamaları ortamınızı güvenli ve iş akışınızı verimli tutacaktır.

    Tam SSH erişimi ve root kontrolü olan güvenilir bir barındırma ortamı arıyorsanız, AlexHost VPS Barındırması‘nı keşfedin — geliştiriciler, işletmeler ve her şey için tasarlanmış planlar. Altyapı ihtiyaçlarınız alan adlarınız için SSL güvenliğine kadar uzanıyorsa, web trafiğinizi uçtan uca şifreli tutmak için SSL Sertifikaları‘nı kontrol etmeyi unutmayın.

    *SSH yapılandırması veya sunucu yönetimi hakkında sorularınız mı var? AlexHost destek ekibi, barındırma ortamınızdan en iyi şekilde yararlanmanıza yardımcı olmak için 24/7 kullanılabilir.*