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:
| Gereksinim | Ayrıntılar |
|---|---|
| Sunucu IP adresi | Hosting 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 istemcisi | Linux/macOS’ta yerleşik; Windows’ta PuTTY veya Windows Terminal |
| SSH portu | Varsayı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.45Sunucunuz 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 2222Adı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.txtDosyaları 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/defaultSistem İ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 -xePaket 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-nameAğ 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.me5. 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_configHerhangi 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 --reloadAdı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 noRoot girişini devre dışı bırakmadan önce, aşağıdakilere sahip olduğunuzdan emin olun:
- Root olmayan bir kullanıcı oluşturdum:
adduser myuser - Sudo ayrıcalıkları verildi:
usermod -aG sudo myuser - 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 2Adı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 deployuserAdı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 noBu 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.logcPanel 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.*
tasarruf edin