
Linux Sunucularda Temel Komut Satırı: Yeni Başlayanlar İçin SSH Rehberi
Linux sunucuya SSH ile nasıl bağlanırsınız? ls, cd, mkdir, rm, cp, mv, nano komutları ve temel Linux dosya sistemi yapısı. Yeni başlayanlar için kapsamlı SSH rehberi.
Linux Sunucularda Temel Komut Satırı: Yeni Başlayanlar İçin SSH Rehberi
Web hosting dünyasına adım attığınızda er ya da geç Linux komut satırı ile karşılaşırsınız. SSH üzerinden sunucu yönetimi, pek çok işlemi cPanel'den çok daha hızlı yapmanızı sağlar. Bu rehberde, sunucu yönetimi için bilmeniz gereken temel Linux komutlarını adım adım ele alıyoruz.
SSH Nedir ve Nasıl Bağlanılır?
SSH (Secure Shell), şifreli bir protokol ile uzak sunucuya komut satırı erişimi sağlar.
Windows'ta SSH Bağlantısı
PuTTY ile:
- PuTTY indir ve aç
- Host Name: sunucunuz.com veya IP
- Port: 22
- Connection Type: SSH
- Open tıklayın
- Kullanıcı adı ve şifre girin
Windows Terminal / PowerShell ile:
ssh [email protected]
# veya
ssh -p 22 kullanici@IP_ADRESI
macOS/Linux'ta SSH Bağlantısı
Terminal açın:
ssh [email protected]
# İlk bağlantıda "yes" yazarak host anahtarını kabul edin
# Şifrenizi girin (görünmez, normal)
SSH Anahtar Tabanlı Kimlik Doğrulama (Daha Güvenli)
# Yerel bilgisayarda SSH anahtar çifti oluştur
ssh-keygen -t rsa -b 4096
# Public anahtarı sunucuya kopyala
ssh-copy-id [email protected]
Artık şifre olmadan bağlanabilirsiniz.
Linux Dosya Sistemi Yapısı
Linux'ta her şey "/" (kök) dizininden başlar:
/
├── home/ → Kullanıcı ev dizinleri (/home/kullanici)
├── var/ → Değişken veriler (log dosyaları)
│ ├── log/ → Sistem logları
│ └── www/ → Web dosyaları (bazı sistemlerde)
├── etc/ → Konfigürasyon dosyaları
├── usr/ → Kullanıcı programları
├── tmp/ → Geçici dosyalar
├── root/ → Root kullanıcı ev dizini
└── proc/ → Sistem bilgisi (sanal dosya sistemi)
cPanel hosting'de web dosyalarınız genellikle:
/home/kullaciadi/public_html/
Temel Navigasyon Komutları
pwd - Mevcut Dizini Göster
pwd
# Çıktı: /home/kullanici/public_html
ls - Dosyaları Listele
ls # Temel liste
ls -l # Detaylı liste (boyut, tarih, izin)
ls -la # Gizli dosyalarla detaylı liste
ls -lh # Boyutları insan okunabilir formatta
ls -lt # Tarihe göre sıralı
cd - Dizin Değiştir
cd /home/kullanici/ # Mutlak yol ile git
cd public_html # Göreceli yol ile git
cd .. # Bir üst dizine git
cd ~ # Ev dizinine git
cd - # Önceki dizine dön
Dosya ve Dizin İşlemleri
mkdir - Dizin Oluştur
mkdir yeni-klasor
mkdir -p ana/alt/derin # İç içe dizin oluştur
touch - Boş Dosya Oluştur
touch dosya.txt
touch index.php
cp - Kopyala
cp kaynak.txt hedef.txt # Dosya kopyala
cp -r kaynak-klasor/ hedef-klasor/ # Klasör kopyala
cp -rp kaynak/ hedef/ # İzinleri koruyarak kopyala
mv - Taşı veya Yeniden Adlandır
mv eski-isim.txt yeni-isim.txt # Yeniden adlandır
mv dosya.txt /hedef/klasor/ # Taşı
mv klasor/ /yeni/konum/ # Klasör taşı
rm - Sil
rm dosya.txt # Dosya sil
rm -r klasor/ # Klasör sil (özyinelemeli)
rm -rf klasor/ # Onaysız sil (DİKKATLİ!)
rm *.log # Tüm .log dosyalarını sil
Uyarı: rm -rf geri alınamaz. Yanlış kullanım kritik verileri silebilir.
Dosya İçeriği Görüntüleme
cat - Dosya İçeriğini Göster
cat dosya.txt # Tüm içeriği göster
cat -n dosya.txt # Satır numarasıyla göster
less - Sayfa Sayfa Göster
less /var/log/apache2/error.log # Sayfa sayfa görüntüle
# Gezinme: Space (ileri), b (geri), q (çıkış), / (ara)
head ve tail - Başını/Sonunu Göster
head -20 dosya.txt # İlk 20 satır
tail -50 dosya.txt # Son 50 satır
tail -f /var/log/error.log # Canlı log takibi
Metin Editörleri
nano - Kolay Editör (Önerilen Başlangıç)
nano dosya.txt
# Kısayollar:
# Ctrl+O → Kaydet
# Ctrl+X → Çıkış
# Ctrl+W → Bul
vi/vim - Güçlü Editör (Öğrenme Eğrisi Var)
vi dosya.txt
# Modlar: Normal mod (Esc), Ekleme modu (i)
# Kaydet ve çıkış: :wq
# Kaydetmeden çıkış: :q!
Dosya Arama
find - Dosya Bul
find /var/www -name "*.php" # Tüm PHP dosyaları
find . -name "wp-config.php" # wp-config'i bul
find /tmp -size +100M # 100MB üzeri dosyalar
find . -mtime -7 -name "*.log" # Son 7 günde değişen loglar
grep - İçerik Ara
grep "hata" dosya.log # Dosyada kelime ara
grep -r "DB_NAME" /var/www/ # Klasörde özyinelemeli ara
grep -i "error" /var/log/apache2/* # Büyük/küçük harf duyarsız
grep -n "pattern" dosya.txt # Satır numarasıyla
Sistem Bilgisi Komutları
df -h # Disk kullanımı
free -h # RAM kullanımı
top # Çalışan process'ler (q ile çıkış)
htop # Renkli process monitörü (yüklü ise)
uptime # Sunucu çalışma süresi
uname -a # İşletim sistemi bilgisi
Dosya İzinleri
chmod 644 dosya.txt # rw-r--r-- (dosyalar için)
chmod 755 klasor/ # rwxr-xr-x (klasörler için)
chmod -R 755 public_html/ # Özyinelemeli izin değiştir
chown kullanici:grup dosya # Sahip değiştir
İzin değerleri:
- 4 = Okuma (r)
- 2 = Yazma (w)
- 1 = Çalıştırma (x)
- 7 = rwx = 4+2+1
- 6 = rw- = 4+2
- 5 = r-x = 4+1
SSH'tan Çıkış
exit
# veya Ctrl+D
Büyükweb VDS'de SSH Erişimi
Büyükweb VDS sunucular root SSH erişimi ile birlikte gelir. Full kontrol imkanı, SSH anahtar desteği ve özelleştirilebilir güvenlik duvarı ile tam sunucu kontrolü sağlar.
Sonuç
Linux komut satırı başlangıçta ürkütücü görünse de temel komutları öğrenmek birkaç saat içinde mümkündür. pwd, ls, cd, mkdir, cp, mv, rm ve grep komutları, sunucu yönetiminin %80'ini karşılar. SSH erişimi ile hem hosting hem de VDS/dedicated sunucu yönetiminde büyük verimlilik kazanırsınız.
SSH Anahtar Türleri ve Modern Tercihler
ssh-keygen default'u eski; ed25519 algoritması 2026'da standart:
# Modern (önerilen) — ed25519: küçük, hızlı, güvenli
ssh-keygen -t ed25519 -C "[email protected]"
# Eski projelerle uyumluluk için RSA 4096
ssh-keygen -t rsa -b 4096 -C "[email protected]"
# ECDSA — yaygın değil, ed25519 yerine kullanılmaz
| Anahtar | Boyut | Hız | Güvenlik | Uyumluluk |
|---|---|---|---|---|
| ed25519 | 256 bit | en hızlı | mükemmel | OpenSSH 6.5+ (2014+) |
| RSA 4096 | 4096 bit | yavaşça | iyi | herkes |
| ECDSA | 256/521 bit | hızlı | iyi | OpenSSH 5.7+ |
| RSA 2048 | 2048 bit | hızlı | artık zayıf | herkes |
| DSA | 1024 bit | — | kullanılmamalı | OpenSSH 7.0+ disable |
~/.ssh/authorized_keys dosyası 0600 izinde; ~/.ssh dizini 0700 olmalı yoksa sshd anahtarı reddeder.
~/.ssh/config — Bağlantıları Sadeleştir
Çok sunucu yönetiyorsanız her seferinde ssh -p 2222 -i ~/.ssh/proje.pem -o StrictHostKeyChecking=no [email protected] yazmak yerine:
# ~/.ssh/config
Host buyukweb-vds
HostName 123.45.67.89
Port 2222
User uguro
IdentityFile ~/.ssh/buyukweb_ed25519
ServerAliveInterval 60
ServerAliveCountMax 3
Host buyukweb-*
User admin
IdentityFile ~/.ssh/admin_ed25519
StrictHostKeyChecking accept-new
# Jump host (bastion) üzerinden iç ağa
Host iclweb-prod
HostName 10.0.1.10
ProxyJump bastion.example.com
User deployer
Host *
AddKeysToAgent yes
ServerAliveInterval 30
Artık ssh buyukweb-vds yeter; scp, rsync, git da aynı alias'ı tanır.
SSH Güvenlik Hardening
İlk gün VDS aldığında uygulanacak temel sıkılaştırma:
# /etc/ssh/sshd_config
# Default 22 yerine custom port (script-kiddie tarama azalır)
Port 2222
# Root direkt login KAPALI (sudo'lu kullanıcı kullan)
PermitRootLogin no
# Sadece anahtar; şifre yasak
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no
# Bağlantı limitleri
MaxAuthTries 3
LoginGraceTime 30s
MaxSessions 5
MaxStartups 10:30:60
# X11 forwarding kapalı (gerekmiyorsa)
X11Forwarding no
# Sadece belirli kullanıcılar
AllowUsers admin deployer
# veya grup
AllowGroups ssh-users
# Banner (yasal uyarı için)
Banner /etc/issue.net
# Restart sonrası
systemctl restart sshd
Önemli: sshd_config'i değiştirdikten sonra mevcut session'ı kapatma — yeni terminal açıp test et; hata varsa eski session'dan geri al. Aksi durumda kendini sunucudan kilitlersin.
SSH Agent + Forwarding
Anahtarları her bağlantıda yazmamak için ssh-agent:
# Agent başlat (genelde otomatik)
eval "$(ssh-agent -s)"
# Anahtar ekle (parolayı bir kez sor)
ssh-add ~/.ssh/buyukweb_ed25519
# Listele
ssh-add -l
# Tüm anahtarları çıkar (lockdown)
ssh-add -D
ForwardAgent dikkat: ssh -A veya config'te ForwardAgent yes ile bağlandığın sunucu agent'ını kullanır. Sunucu compromise olursa anahtarın da risk altında. Sadece kendi güvendiğin jump host'larda aç. Daha güvenli alternatif: ProxyJump.
tmux — Uzun Süreli Oturumlar
SSH bağlantı koparsa shell'in çalıştırdığı her şey ölür (sigorta atarsa, vs). tmux çözer:
apt install tmux
# Yeni oturum başlat
tmux new -s deploy
# Pencereyi parçala
# Ctrl+b " → yatay split
# Ctrl+b % → dikey split
# Ctrl+b o → pencere değiştir
# Detach (oturum çalışmaya devam)
# Ctrl+b d
# Reconnect
tmux attach -t deploy
# Tüm oturumları listele
tmux ls
# Pratik: uzun npm install / build için
tmux new -s build
npm run build:prod
# Ctrl+b d → SSH kapansa bile build devam
screen alternatifi tmux'tan daha eski; modern tercih tmux.
Shell Verimlilik Kısayolları
Komut satırını saatler kullanacaksanız bunları öğrenin:
| Kısayol | İşlev |
|---|---|
Ctrl+R |
Geçmişte arama (yazdıkça filtrele, tekrar Ctrl+R önceki match) |
Ctrl+A |
Satır başı |
Ctrl+E |
Satır sonu |
Ctrl+W |
Sözcük sil (geri) |
Ctrl+U |
Satırı temizle |
Ctrl+L |
clear (alternatif) |
Tab |
Auto-complete (dosya, komut) |
Tab Tab |
Olası tüm tamamlamalar |
!! |
Son komutu tekrarla (sudo !! çok kullanışlı) |
| `!# Linux Sunucularda Temel Komut Satırı: Yeni Başlayanlar İçin SSH Rehberi |
Web hosting dünyasına adım attığınızda er ya da geç Linux komut satırı ile karşılaşırsınız. SSH üzerinden sunucu yönetimi, pek çok işlemi cPanel'den çok daha hızlı yapmanızı sağlar. Bu rehberde, sunucu yönetimi için bilmeniz gereken temel Linux komutlarını adım adım ele alıyoruz.
SSH Nedir ve Nasıl Bağlanılır?
SSH (Secure Shell), şifreli bir protokol ile uzak sunucuya komut satırı erişimi sağlar.
Windows'ta SSH Bağlantısı
PuTTY ile:
- PuTTY indir ve aç
- Host Name: sunucunuz.com veya IP
- Port: 22
- Connection Type: SSH
- Open tıklayın
- Kullanıcı adı ve şifre girin
Windows Terminal / PowerShell ile:
ssh [email protected]
# veya
ssh -p 22 kullanici@IP_ADRESI
macOS/Linux'ta SSH Bağlantısı
Terminal açın:
ssh [email protected]
# İlk bağlantıda "yes" yazarak host anahtarını kabul edin
# Şifrenizi girin (görünmez, normal)
SSH Anahtar Tabanlı Kimlik Doğrulama (Daha Güvenli)
# Yerel bilgisayarda SSH anahtar çifti oluştur
ssh-keygen -t rsa -b 4096
# Public anahtarı sunucuya kopyala
ssh-copy-id [email protected]
Artık şifre olmadan bağlanabilirsiniz.
Linux Dosya Sistemi Yapısı
Linux'ta her şey "/" (kök) dizininden başlar:
/
├── home/ → Kullanıcı ev dizinleri (/home/kullanici)
├── var/ → Değişken veriler (log dosyaları)
│ ├── log/ → Sistem logları
│ └── www/ → Web dosyaları (bazı sistemlerde)
├── etc/ → Konfigürasyon dosyaları
├── usr/ → Kullanıcı programları
├── tmp/ → Geçici dosyalar
├── root/ → Root kullanıcı ev dizini
└── proc/ → Sistem bilgisi (sanal dosya sistemi)
cPanel hosting'de web dosyalarınız genellikle:
/home/kullaciadi/public_html/
Temel Navigasyon Komutları
pwd - Mevcut Dizini Göster
pwd
# Çıktı: /home/kullanici/public_html
ls - Dosyaları Listele
ls # Temel liste
ls -l # Detaylı liste (boyut, tarih, izin)
ls -la # Gizli dosyalarla detaylı liste
ls -lh # Boyutları insan okunabilir formatta
ls -lt # Tarihe göre sıralı
cd - Dizin Değiştir
cd /home/kullanici/ # Mutlak yol ile git
cd public_html # Göreceli yol ile git
cd .. # Bir üst dizine git
cd ~ # Ev dizinine git
cd - # Önceki dizine dön
Dosya ve Dizin İşlemleri
mkdir - Dizin Oluştur
mkdir yeni-klasor
mkdir -p ana/alt/derin # İç içe dizin oluştur
touch - Boş Dosya Oluştur
touch dosya.txt
touch index.php
cp - Kopyala
cp kaynak.txt hedef.txt # Dosya kopyala
cp -r kaynak-klasor/ hedef-klasor/ # Klasör kopyala
cp -rp kaynak/ hedef/ # İzinleri koruyarak kopyala
mv - Taşı veya Yeniden Adlandır
mv eski-isim.txt yeni-isim.txt # Yeniden adlandır
mv dosya.txt /hedef/klasor/ # Taşı
mv klasor/ /yeni/konum/ # Klasör taşı
rm - Sil
rm dosya.txt # Dosya sil
rm -r klasor/ # Klasör sil (özyinelemeli)
rm -rf klasor/ # Onaysız sil (DİKKATLİ!)
rm *.log # Tüm .log dosyalarını sil
Uyarı: rm -rf geri alınamaz. Yanlış kullanım kritik verileri silebilir.
Dosya İçeriği Görüntüleme
cat - Dosya İçeriğini Göster
cat dosya.txt # Tüm içeriği göster
cat -n dosya.txt # Satır numarasıyla göster
less - Sayfa Sayfa Göster
less /var/log/apache2/error.log # Sayfa sayfa görüntüle
# Gezinme: Space (ileri), b (geri), q (çıkış), / (ara)
head ve tail - Başını/Sonunu Göster
head -20 dosya.txt # İlk 20 satır
tail -50 dosya.txt # Son 50 satır
tail -f /var/log/error.log # Canlı log takibi
Metin Editörleri
nano - Kolay Editör (Önerilen Başlangıç)
nano dosya.txt
# Kısayollar:
# Ctrl+O → Kaydet
# Ctrl+X → Çıkış
# Ctrl+W → Bul
vi/vim - Güçlü Editör (Öğrenme Eğrisi Var)
vi dosya.txt
# Modlar: Normal mod (Esc), Ekleme modu (i)
# Kaydet ve çıkış: :wq
# Kaydetmeden çıkış: :q!
Dosya Arama
find - Dosya Bul
find /var/www -name "*.php" # Tüm PHP dosyaları
find . -name "wp-config.php" # wp-config'i bul
find /tmp -size +100M # 100MB üzeri dosyalar
find . -mtime -7 -name "*.log" # Son 7 günde değişen loglar
grep - İçerik Ara
grep "hata" dosya.log # Dosyada kelime ara
grep -r "DB_NAME" /var/www/ # Klasörde özyinelemeli ara
grep -i "error" /var/log/apache2/* # Büyük/küçük harf duyarsız
grep -n "pattern" dosya.txt # Satır numarasıyla
Sistem Bilgisi Komutları
df -h # Disk kullanımı
free -h # RAM kullanımı
top # Çalışan process'ler (q ile çıkış)
htop # Renkli process monitörü (yüklü ise)
uptime # Sunucu çalışma süresi
uname -a # İşletim sistemi bilgisi
Dosya İzinleri
chmod 644 dosya.txt # rw-r--r-- (dosyalar için)
chmod 755 klasor/ # rwxr-xr-x (klasörler için)
chmod -R 755 public_html/ # Özyinelemeli izin değiştir
chown kullanici:grup dosya # Sahip değiştir
İzin değerleri:
- 4 = Okuma (r)
- 2 = Yazma (w)
- 1 = Çalıştırma (x)
- 7 = rwx = 4+2+1
- 6 = rw- = 4+2
- 5 = r-x = 4+1
SSH'tan Çıkış
exit
# veya Ctrl+D
Büyükweb VDS'de SSH Erişimi
Büyükweb VDS sunucular root SSH erişimi ile birlikte gelir. Full kontrol imkanı, SSH anahtar desteği ve özelleştirilebilir güvenlik duvarı ile tam sunucu kontrolü sağlar.
Sonuç
Linux komut satırı başlangıçta ürkütücü görünse de temel komutları öğrenmek birkaç saat içinde mümkündür. pwd, ls, cd, mkdir, cp, mv, rm ve grep komutları, sunucu yönetiminin %80'ini karşılar. SSH erişimi ile hem hosting hem de VDS/dedicated sunucu yönetiminde büyük verimlilik kazanırsınız.
| Son komutun son argümanı |
| Alt+. | Önceki argümanı çağır |
sudo ve Yetkilendirme
# Komutu yetkili çalıştır
sudo apt update
# Root shell aç (dikkat — uzun süre kullanma)
sudo -i
sudo -s
# Başka kullanıcı kimliğinde
sudo -u www-data php artisan migrate
# /etc/sudoers — visudo ile düzenle (syntax check var)
visudo
# Belirli komutlara şifresiz sudo
deployer ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
deployer ALL=(ALL) NOPASSWD: /usr/bin/systemctl reload nginx
# Tüm sudo log'ları
tail -f /var/log/auth.log | grep sudo
Best practice: root SSH kapalı + günlük kullanıcıda sudo. sudo -i yerine sadece gerekli komutlara sudo komut — daha az yanlışlık riski.
Process Management — Detaylı
# Çalışan process'ler
ps aux | grep nginx
ps -ef | head
pgrep -af "nginx: worker"
# Belirli process'leri bul + sırala
ps aux --sort=-%mem | head -10 # bellek hogger'ları
ps aux --sort=-%cpu | head -10 # CPU hogger'ları
# Real-time monitor
top # default
htop # renkli, etkileşimli
btop # modern, grafiksel CLI
# Process'i sonlandır
kill PID # SIGTERM (graceful)
kill -9 PID # SIGKILL (zorla — son çare)
killall nginx # isim ile
pkill -f "java -jar app" # pattern ile
# Background / foreground
long-running-cmd & # arka plan
jobs # arka plan job'lar
fg %1 # öne getir
bg %1 # arka planda devam ettir
# Disconnected çalışsın (logout sonrası)
nohup long-task.sh > task.log 2>&1 &
disown -h %1
systemd ve Servis Yönetimi
# Servis durumu
systemctl status nginx
# Başlat / durdur / yeniden başlat / yeniden yükle
systemctl start nginx
systemctl stop nginx
systemctl restart nginx
systemctl reload nginx # config tekrar yükle, downtime'sız
# Boot'ta otomatik başlat
systemctl enable nginx
systemctl disable nginx
# Tüm aktif servisler
systemctl list-units --type=service --state=running
# Hata ile çıkanlar
systemctl --failed
# Boot loglarını analiz
journalctl -b 0 -p err # bu boot'taki hatalar
systemd-analyze blame # boot'ta yavaş servisler
systemd-analyze critical-chain
Network Tanılama
# Açık portlar (modern netstat yerine ss)
ss -tulpn # TCP/UDP listening, process ile
# Bağlantı sayısı
ss -s
# Belirli porta kim bağlı
ss -tnp | grep ":443"
# DNS sorgu
dig example.com
dig +short example.com
dig MX example.com
dig @8.8.8.8 example.com # belirli sunucuya sor
# Ping
ping -c 4 google.com
# Traceroute alternatifi (daha bilgilendirici)
mtr -rwc 10 google.com
# HTTP test
curl -I https://example.com
curl -v https://example.com
curl -o file.html https://example.com
# IP / interface
ip addr
ip route
ip -s link show eth0
Disk ve Dosya Sistemi
# Disk kullanımı
df -h
df -hT # FS type ile
df -i # inode kullanımı (önemli — full inode = "no space" bile boş)
# Dizin boyutu
du -sh /var/log
du -sh /var/log/*
du -sh /var/log/* | sort -rh | head -10
# İnteraktif disk explorer
ncdu /var
# En büyük 20 dosya
find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null | sort -k5 -rh | head -20
# I/O izleme
iostat -x 2 # 2 saniyede bir
iotop # process bazlı I/O
Paket Yönetimi (Debian/Ubuntu)
# Update package list (sadece liste)
apt update
# Yeni sürümlere yükselt
apt upgrade
apt full-upgrade # bağımlılık değişikliği dahil
apt update && apt upgrade -y # tek seferde
# Kurulum / kaldır
apt install nginx
apt remove nginx # config dosyaları kalır
apt purge nginx # config dahil sil
apt autoremove # gereksiz bağımlılıklar
# Arama
apt search "redis"
apt show nginx # detay
# Paket dosyaları nerede
dpkg -L nginx
dpkg -S /etc/nginx/nginx.conf
# Hangi pakette dosya yok? (Apt tarafından sağlanan)
apt-file search /usr/sbin/named
RHEL/AlmaLinux/Rocky: dnf install, dnf upgrade, dnf search, dnf info — komutlar benzer.
cron ve systemd Timer
# crontab düzenle (kullanıcı bazlı)
crontab -e
# Her gece 02:30 yedek
30 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
# Her 5 dakikada
*/5 * * * * /usr/local/bin/check.sh
# Pazartesi 03:00
0 3 * * 1 /usr/local/bin/weekly.sh
# Sistem genel (root)
sudo crontab -e
# veya /etc/cron.d/myapp dosyası
Modern alternatif systemd timer:
# /etc/systemd/system/backup.service
[Unit]
Description=Database Backup
[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh
# /etc/systemd/system/backup.timer
[Unit]
Description=Backup every day at 02:30
[Timer]
OnCalendar=*-*-* 02:30:00
RandomizedDelaySec=10min
Persistent=true
[Install]
WantedBy=timers.target
systemctl enable --now backup.timer
systemctl list-timers
Pratik Troubleshooting Senaryoları
"Disk dolu" hatası
df -h | grep -v tmpfs # hangi mount %95+
du -sh /var/log/* /var/lib/* /tmp/* 2>/dev/null | sort -rh | head -10
journalctl --vacuum-time=2d
apt clean && apt autoremove
Site açılmıyor
systemctl status nginx # servis çalışıyor mu
ss -tlnp | grep -E ":(80|443)" # port dinleniyor mu
nginx -t # config syntax doğru mu
tail -f /var/log/nginx/error.log
curl -I http://localhost
Yüksek CPU
top # hangi process
ps aux --sort=-%cpu | head
strace -p PID # process ne yapıyor (root)
perf top # detaylı kernel profile
Bellek dolu
free -h
ps aux --sort=-%mem | head -10
sync && echo 3 > /proc/sys/vm/drop_caches # cache temizle
journalctl -u nginx --since "10 min ago" | grep -i "out of memory"
Sıkça Sorulan Sorular
SSH parolasını unuttum, ne yapmalı?
Anahtar tabanlı oturum açabiliyorsanız passwd ile yeni şifre. Hiç erişim yoksa hosting sağlayıcısının VNC/IPMI/console paneliyle root şifre sıfırla. Büyükweb VDS müşterileri için 0850 302 60 70 üzerinden destek talebi açılabilir.
Anahtarımı bilgisayarımda kaybedersem?
Sunucudaki ~/.ssh/authorized_keys'ten ilgili public key satırını çıkarın (başka bir yedek bağlantınız varsa). Yoksa konsoldan giriş + key revoke. Önlem: anahtarınız parolalı olmalı (ssh-keygen -p ile parola ekle), agent timeout (AddKeysToAgent + IdentitiesOnly).
"Permission denied (publickey)" hatası
ssh -v kullanici@hostile debug 2)~/.sshizinleri (0700, authorized_keys 0600) 3) Sunucuda/var/log/auth.logne diyor 4)PubkeyAuthentication yesmi 5) Anahtar agent'ta mı (ssh-add -l)
Port 22 yerine başka port kullanmak güvenli mi?
Security through obscurity — sadece script-kiddie scan'i azaltır, hedefli saldırıyı durdurmaz. Ama log temizliği için faydalı. Esas önlem fail2ban + key-only auth + MaxAuthTries 3.
MFA / TOTP SSH'a eklenir mi?
Evet — Google Authenticator PAM modülü:
apt install libpam-google-authenticator
google-authenticator # kullanıcı bazlı QR oluştur
/etc/pam.d/sshd ve /etc/ssh/sshd_config'te AuthenticationMethods publickey,keyboard-interactive ile zorunlu ikinci faktör.
"tmux'a alıştım, screen kullanmam mı?"
screen 1980'lerden beri var; tmux daha modern + aktif gelişiyor. Yeni kullanıcılar tmux'a doğrudan başlasın. Eski sistemlerde sadece screen varsa fonksiyonel olarak benzer.
Sunucudan dosya nasıl indiririm?
scp kullanici@host:/path/file ./yerel/ — basit. Çok dosya için rsync: rsync -avz kullanici@host:/path/ ./yerel/ (delta sync + sıkıştırma). Grafik istiyorsanız WinSCP (Windows), Cyberduck (Mac), FileZilla (cross-platform) — hepsi SFTP konuşur.
root şifremi default tuttum, hızlı saldırı oldu mu?
Evet, çok yüksek olasılıkla bot'lar 5-10 dakika içinde tarar. grep "Failed password" /var/log/auth.log | wc -l ile sayar — binlerce dakikada normal. Hemen: 1) Yeni admin kullanıcı + sudo + key 2) PermitRootLogin no 3) PasswordAuthentication no 4) fail2ban kur 5) Eğer compromise şüphesi varsa VDS'i imajdan yeniden kur (clean install).
Linux'ta tab-complete neden çalışmıyor?
bash-completion paketi kurulu değil. apt install bash-completion + yeni shell aç. zsh + oh-my-zsh daha gelişmiş tamamlama; tercihli.
Büyükweb'de SSH Erişimi
Büyükweb VDS, Sanal Sunucu ve Fiziksel Dedicated paketlerinde root SSH erişimi standarttır. Custom port, anahtar yönetimi, fail2ban kurulumu için 0850 302 60 70 üzerinden destek alabilirsiniz.
Linux Hosting ve cPanel hosting paketlerinde shell access (Jailed Shell) opsiyonel — cPanel > SSH Access menüsünden anahtar yönetimi ve bağlantı bilgileri.
İlgili Rehberler
- Linux Log Yönetimi: Sistem Logları Okuma
- Debian 12 Sunucu Kurulumu Güvenlik
- fail2ban Kurulumu
- Bitvise SSH SOCKS5 Tunnel
- CSF ConfigServer Firewall
İlgili Büyükweb Hizmetleri
Linux tercih eden yöneticiler için Türkiye lokasyonlu sunucu paketlerimiz:
Sorularınız için 0850 302 60 70 numaralı destek hattımıza veya iletişim sayfamıza yazabilirsiniz.
Linux & Komut Satırı İlgili Hizmetlerimiz
Bu yazıda anlatılan teknik konuyu profesyonel altyapıyla deneyimleyin
Etiketler:

