15%

Tüm Hosting Hizmetlerinde %15 indirim

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

Kodu kullanın:

Skills
Başlayın
01.11.2024

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

Secure Shell (SSH), sistem yöneticisinin en güçlü ve gerekli araçlarından biridir. Küçük bir kişisel proje yönetip yönetmediğiniz veya üretim web uygulaması çalıştırıyor olun, SSH size sunucunuza şifreli, kimlik doğrulamalı, uzaktan erişim 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.

İçindekiler

  1. SSH Nedir ve Neden Önemlidir?
  2. Bağlanmadan Önce Ön Koşullar
  3. SSH Aracılığıyla Sunucunuza Nasıl Erişilir
  4. Sunucu Yönetimi için Gerekli SSH Komutları
  5. SSH Yapılandırmanızı Sağlamlaştırma
  6. SSH Anahtar Kimlik Doğrulaması: Doğru Giriş Yöntemi
  7. SCP ve SFTP ile Dosyaları Güvenli Bir Şekilde Aktarma
  8. SSH Sorun Giderme İpuçları
  9. Sonuç

1. SSH Nedir ve Neden Önemlidir? {#what-is-ssh}

SSH (Secure Shell), yerel makineniz (istemci) ile uzak 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 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 standar yöntemdir:

  • Uzaktan komut satırı erişimi — sunucunuzda herhangi bir Linux/Unix komutunu, sanki önünde oturuyormuşsunuz gibi çalıştırın
  • Güvenli dosya aktarımları — SCP veya SFTP kullanarak makineler arasında dosya taşıyın
  • Tünel açma ve port yönlendirme — diğer protokolleri SSH bağlantısı aracılığıyla 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

VPS Barındırma planı veya Özel Sunucu çalıştırıyorsanız, SSH neredeyse kesinlikle günlük yönetim için birincil arayüzünüzdür.

2. Bağlanmadan Önce Ön Koşullar {#prerequisites}

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

GereksinimAyrıntılar
Sunucu IP adresiBarındırma kontrol panelinizde veya hoş geldiniz e-postasında sağlanır
SSH kullanıcı adıTipik olarak root yeni bir VPS için veya yönetilen ortamlarda özel bir kullanıcı
SSH şifresi veya anahtarıSağlama sırasında ayarlanır veya e-posta ile 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 Barındırma planında iseniz, SSH erişimi kısıtlanabilir veya kontrol panelinizde açık etkinleştirme gerekebilir. Sağlayıcınıza danışın.

3. SSH Aracılığıyla Sunucunuza Nasıl Erişilir {#accessing-via-ssh}

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 istemcisini içerir)
  • Windows (eski): Ü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 port kullanıyorsa (daha sonra neden değiştirmeniz gerektiğini göreceğiz), bunu -p bayrağı ile belirtin:

ssh username@your_server_ip -p 2222

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

Yeni bir sunucuya ilk kez bağlandığınızda, SSH şöyle bir ileti gösterecektir:

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ğrulayacaktır — herhangi bir şey değişirse sizi uyaracaktır (bu ortadaki adam saldırısını gösterebilir).

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

İstendiğinde şifrenizi 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ı durumdadır ve sunucunuzu yönetmeye başlayabilirsiniz.

4. Sunucu Yönetimi için Gerekli SSH Komutları {#essential-commands}

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ı Sağlamlaştırma {#hardening-ssh}

Varsayılan SSH yapılandırması işlevseldir ancak optimum güvenli değildir. SSH internete açık olduğundan, otomatik brute-force saldırıları için sürekli bir hedef olur. 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 açık ve bağlı ikinci bir terminal oturumu tutun. 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ı durdurmayacak, ancak otomatik taramalardan gelen gürültüyü önemli ölçüde azaltacaktır.

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

# Before:
#Port 22

# After:
Port 2222

# öğesini kaldırarak satırın açıklamasını kaldırı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 riski oluşturur. 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. Ayrı bir oturumda bu kullanıcı olarak giriş yapabileceğinizi doğruladı

Adım 3: Giriş Denemelerini Sınırlandırı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ırlandırı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: Parola Kimlik Doğrulamasını Devre Dışı Bırakın (SSH Anahtarları Ayarlandıktan Sonra)

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 Anahtar Kimlik Doğrulaması: Doğru Giriş Yöntemi {#ssh-key-authentication}

SSH anahtarları kriptografik anahtar çiftleridir — yerel makinenizde kalan özel anahtar ve sunucuda yaşayan ortak anahtar. Kimlik doğrulaması, özel anahtarı hiç 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 (sunucu 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 şu konular istenecektir:

  • Dosya konumunu seçin — varsayılanı kabul etmek için Enter tuşuna basın (~/.ssh/id_ed25519)
  • Bir parola belirleyin — çok tavsiye edilir; 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.pubortak anahtarınız (bu sunucuya gider)

Adım 2: Ortak 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 otomatik olarak anahtarınızı kullanacaktır. Bir parola belirlediyseniz, sizden istenecektir (bu sunucu şifresi değil, yerel parolanızdır).

Adım 4: SSH Config Dosyası ile Bağlantıları Basitleştirin

Birden fazla sunucu yönetiyorsanız, uzun komutlar yazmaktan kaçınmak için bir SSH config dosyası oluşturun:

nano ~/.ssh/config

Şöyle girdiler 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 {#file-transfers}

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 dosya kopyalayın:

scp /path/to/local/file.txt username@your_server_ip:/path/to/remote/directory/

15%

Tüm Hosting Hizmetlerinde %15 indirim

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

Kodu kullanın:

Skills
Başlayın