10 GB'lık bir yedeği FTP ile indirmeye çalışıp yarıda kopan bağlantıyı izlemek, ya da 40 bin dosyalık bir WordPress kurulumunu dosya yöneticisinden tek tek taşımaya çalışmak — cPanel SSH erişimi tam olarak bu anlarda aranır. SSH bir kez açıldığında tar ile arşiv 20 saniyede oluşur, wp search-replace ile site taşıma sonrası URL değişimi tek komuta iner, composer install sunucuda çalışır.
Türkçe kaynakların çoğu bu konuda "Güvenlik → SSH Erişimi'ne girin, anahtarınızı oluşturun" deyip bırakıyor. Oysa asıl takıldığınız yerler bundan sonrası: oluşturduğunuz anahtarı Authorize etmezseniz hiçbir işe yaramaz, cPanel'in kendi tarayıcı içi Terminal aracı çoğu kişinin haberi olmadığı hâlde hiçbir kurulum gerektirmeden aynı işi görür, paylaşımlı hostingte düştüğünüz kabuk çoğu zaman jailshell olduğu için sudo ve sistem komutları çalışmaz, ve pek çok firmada SSH varsayılan olarak tamamen kapalıdır. Bu yazı bunların hepsini sırayla ele alıyor.
cPanel'de SSH Erişimi Nasıl Açılır#
cPanel'de SSH erişimi Security → SSH Access ekranından yönetilir; ancak bu ekranın varlığı SSH'in açık olduğu anlamına gelmez — sunucu yöneticisi paket düzeyinde kapatmış olabilir.
Önce durumunuzu tespit edin:
- cPanel ana ekranında Güvenlik (Security) bölümüne bakın.
- SSH Erişimi (SSH Access) simgesi varsa tıklayın; Manage SSH Keys düğmesini göreceksiniz.
- Simge hiç yoksa, hosting paketinizde SSH özelliği kapalıdır. Bu durumda tek yol, hosting firmanızdan hesabınız için SSH açmasını istemektir.
Paylaşımlı hostingte SSH'in kapalı olması bir eksiklik değil, bilinçli bir güvenlik tercihidir: aynı sunucuda yüzlerce hesap barındığı için kabuk erişimi saldırı yüzeyini büyütür. Çoğu firma, hesap sahibinin kimliğini doğruladıktan sonra talep üzerine açar. Talebi açarken ne yapacağınızı yazın ("WP-CLI ile toplu güncelleme ve büyük yedek arşivleme") — bu, açılma ihtimalini belirgin biçimde artırır.
⚠️ SSH açıldığında bile şifreyle giriş genellikle kapalıdır. Sunucular kaba kuvvet saldırılarına karşı PasswordAuthentication no ile yapılandırılır ve yalnızca anahtarla giriş kabul edilir. Bu yüzden bir sonraki adım isteğe bağlı değil, zorunludur.
SSH Anahtarı Oluşturma ve Authorize Etme#
Bu, en çok atlanan adım: cPanel'de bir SSH anahtarı oluşturmak yetmez, o anahtarı ayrıca Authorize (yetkilendirme) etmeniz gerekir. Yetkilendirilmemiş anahtar sunucuda durur ama girişi kabul edilmez.
Manage SSH Keys ekranında iki yol var:
Yol A — Anahtarı cPanel'e ürettirin:
- Generate a New Key düğmesine basın.
- Key Name alanına anlamlı bir isim verin (
id_rsayerineofis-macbookgibi — hangi cihazın anahtarı olduğunu altı ay sonra hatırlarsınız). - Key Password girin. Bu, anahtar dosyasını koruyan parolalardır; boş bırakırsanız anahtarı çalan kişi doğrudan girer.
- Key Type olarak RSA, Key Size olarak 4096 seçin. ED25519 seçeneği sunuluyorsa onu tercih edin: daha kısa, daha hızlı ve en az RSA 4096 kadar güçlüdür.
- Generate Key ile üretin.
- Listeye dönün. Public Keys bölümünde yeni anahtarın satırında Manage → Authorize düğmesine basın. Durum "not authorized" iken "authorized" olmalıdır.
- Private Keys bölümünden View/Download ile özel anahtarı bilgisayarınıza indirin ve cPanel'den silin. Özel anahtar sunucuda durmamalıdır.
Yol B — Anahtarı kendi bilgisayarınızda üretin (önerilen):
Özel anahtarın hiçbir zaman sunucuya uğramaması güvenlik açısından daha doğrudur. Kendi makinenizde üretin:
ssh-keygen -t ed25519 -C "ofis-macbook" -f ~/.ssh/cloutr_hosting
Komut iki dosya üretir: cloutr_hosting (özel, asla paylaşılmaz) ve cloutr_hosting.pub (açık, sunucuya yüklenir). .pub dosyasının içeriğini kopyalayın:
cat ~/.ssh/cloutr_hosting.pub
Çıktı tek satırdır ve şuna benzer:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH8k... ofis-macbook
cPanel'de Manage SSH Keys → Import Key ekranına gidin, Paste the public key alanına bu satırı yapıştırın (özel anahtar alanını boş bırakın), Import deyin ve ardından Authorize edin.
Anahtar üretme mantığını daha derinlemesine anlamak isterseniz SSH anahtarı nasıl oluşturulur yazısı süreç ve dosya izinleri tarafını ayrıntılı ele alıyor.
Tarayıcı İçi Terminal Aracı#
cPanel'in Advanced → Terminal aracı, hiçbir program kurmadan doğrudan tarayıcıdan sunucu kabuğuna düşmenizi sağlar ve Türkçe kaynaklarda neredeyse hiç anlatılmaz.
Kullanımı basit: Terminal simgesine tıklarsınız, çıkan uyarıyı onaylarsınız ve ekranın altında siyah bir kabuk penceresi açılır. Kimlik doğrulaması yoktur — panele zaten giriş yapmış olduğunuz için oturum devralınır. Anahtar üretmeye, PuTTY kurmaya, port açmaya gerek kalmaz.
Terminal aracının gerçek avantajları:
- 2083 dışında port gerekmez. Kurumsal ağlar SSH'in 22 portunu sık sık engeller; Terminal HTTPS üzerinden çalıştığı için engellenmez.
- Anahtar yönetimi yoktur. Tek seferlik bir iş için (bir arşivi açmak, bir izni düzeltmek) anahtar kurulumuyla uğraşmazsınız.
- Kurulum gerektirmez. Başkasının bilgisayarındayken bile çalışır.
Sınırları da net:
- Oturum kalıcı değildir. Tarayıcı sekmesini kapattığınızda ya da oturum zaman aşımına uğradığında çalışan komut kesilir. Uzun süren işleri
screenveyanohupile arka plana almadan başlatmayın. - Dosya kopyalama yoktur.
scpile yerel makinenizden dosya gönderemezsiniz; o iş için gerçek SSH veya SFTP gerekir. - Terminal aracı da paket düzeyinde kapatılabilir. Simge görünmüyorsa SSH ile aynı şekilde firmadan istemeniz gerekir.
Uzun sürecek bir iş için doğru kullanım şudur:
screen -S yedek
tar -czf ~/site-yedek.tar.gz public_html
# Ctrl+A ardından D ile oturumdan ayrıl
Sekmeyi kapatsanız bile işlem sürer; sonra screen -r yedek ile geri dönersiniz.
PuTTY ile Windows'tan Bağlanma#
Windows 10 ve sonrasında yerleşik OpenSSH istemcisi bulunur, yani PuTTY şart değildir. PowerShell'i açıp doğrudan bağlanabilirsiniz:
ssh -p 22 -i C:\Users\Ad\.ssh\cloutr_hosting [email protected]
PuTTY kullanmak isterseniz kritik nokta şudur: PuTTY, OpenSSH biçimindeki özel anahtarı doğrudan kabul etmez. Önce PuTTYgen ile .ppk biçimine çevirmeniz gerekir.
- PuTTYgen'i açın, Conversions → Import key ile indirdiğiniz özel anahtarı seçin.
- Anahtar parolanızı girin.
- Save private key ile
.ppkolarak kaydedin. - PuTTY'yi açın; Host Name alanına
[email protected], Port alanına sunucunun SSH portunu yazın. - Sol menüden Connection → SSH → Auth → Credentials yolunu izleyin ve
.ppkdosyasını seçin. - Session ekranına dönüp bağlantıya bir isim verin ve Save ile kaydedin.
⚠️ SSH portu 22 olmayabilir. Pek çok sağlayıcı kaba kuvvet saldırılarını azaltmak için portu değiştirir. Hoş geldiniz e-postanızda ya da müşteri panelinde yazar; bilmiyorsanız 22'ye bağlanma denemeniz zaman aşımıyla sonuçlanır ve sorunun anahtarda olduğunu sanırsınız. Windows tarafındaki bağlantı ayrıntıları ve alternatif istemciler için Windows bilgisayardan sunucuya SSH bağlantısı yazısına bakabilirsiniz.
Jailshell Nedir, Neyi Kısıtlar#
Paylaşımlı hostingte SSH ile bağlandığınızda düştüğünüz kabuk büyük ihtimalle normal bir bash değil, jailshell'dir. Jailshell, kullanıcıyı kendi ev dizinine hapseden kısıtlı bir kabuktur; chroot benzeri bir sanal kök oluşturur ve sistemin geri kalanını görünmez kılar.
Neyin çalışıp neyin çalışmadığını bilmek, boşuna vakit kaybetmenizi engeller:
| İşlem | Jailshell (paylaşımlı) | Normal kabuk (VDS/root) |
|---|---|---|
cd ~/public_html, ls, cp, mv | Çalışır | Çalışır |
tar, zip, unzip, gzip | Çalışır | Çalışır |
wp (WP-CLI) | Genellikle çalışır | Çalışır |
composer, npm, git | Genellikle çalışır | Çalışır |
mysql, mysqldump (kendi veritabanınız) | Çalışır | Çalışır |
sudo / su | Çalışmaz | Çalışır |
/etc altını görüntüleme | Görünmez veya kısıtlı | Çalışır |
systemctl restart | Çalışmaz | Çalışır |
| Başka kullanıcının dizinini okuma | Çalışmaz | Çalışır |
| Port dinleyen servis başlatma | Genellikle engellidir | Çalışır |
ps ile tüm sistem süreçlerini görme | Yalnızca kendi süreçleriniz | Tümü |
Yani jailshell'de "izin reddedildi" hatası aldığınızda bu bir yapılandırma hatası değil, tasarımın kendisidir. sudo apt install çalıştırmaya çalışmanın hiçbir anlamı yoktur; paylaşımlı hostingte sistem paketi kurulmaz.
Hangi kabukta olduğunuzu şöyle anlarsınız:
echo $SHELL
Çıktı /usr/local/cpanel/bin/jailshell ise kısıtlı kabuktasınız, /bin/bash ise normal kabuktasınız.
Sistem paketi kurmak, servis yeniden başlatmak, kendi nginx yapılandırmanızı yazmak ya da bir port dinleyen uygulama çalıştırmak istiyorsanız paylaşımlı hosting yanlış zemin demektir; kök erişimi olan bir sunucuya geçmeniz gerekir.
Paylaşımlı Hostingte SSH ile Yapabileceğiniz Pratik İşler#
Jailshell kısıtlarına rağmen günlük işlerin büyük bölümü SSH'te dosya yöneticisinden kat kat hızlıdır. En sık kullanılanlar:
Büyük arşiv oluşturma ve açma. Dosya yöneticisi 50 bin dosyalık bir dizini sıkıştırırken zaman aşımına uğrar; kabukta saniyeler sürer:
cd ~
tar -czf site-yedek-$(date +%F).tar.gz public_html
tar -xzf eski-site.tar.gz -C public_html
Arayüz tarafındaki karşılığı ve sıkıştırma biçimleri arasındaki farklar için cPanel zip sıkıştırma ve çıkarma yazısına bakın.
Veritabanı yedeği alma ve geri yükleme. phpMyAdmin büyük tablolarda zaman aşımına uğrar; kabukta böyle bir sınır yoktur:
mysqldump -u kullanici_db -p kullanici_wp > wp-yedek.sql
mysql -u kullanici_db -p kullanici_wp < wp-yedek.sql
WordPress toplu işleri. WP-CLI kuruluysa panelden dakikalar süren işler tek komuta iner:
wp core update
wp plugin update --all
wp search-replace 'http://eskisite.com' 'https://yenisite.com' --skip-columns=guid
wp db optimize
Site taşıma sonrası URL değişimi için bu komut serileştirilmiş verileri de doğru şekilde günceller — veritabanında elle "bul ve değiştir" yapmanın bozduğu tam olarak budur. Komut setinin tamamı için WP-CLI kullanımı yazısına göz atabilirsiniz.
Dosya izinlerini toplu düzeltme. Yanlış izinler yüzünden 403 alan bir siteyi iki komutla düzeltirsiniz:
find ~/public_html -type d -exec chmod 755 {} \;
find ~/public_html -type f -exec chmod 644 {} \;
Disk dolduran dizini bulma. "Disk kotam doldu ama neden bilmiyorum" sorusunun cevabı genellikle bir log dosyası ya da eski bir yedektir:
du -sh ~/* | sort -h
du -sh ~/public_html/wp-content/* | sort -h
Sık Karşılaşılan Hatalar ve Çözümleri#
| Hata mesajı | Gerçek neden | Çözüm |
|---|---|---|
Permission denied (publickey) | Anahtar Authorize edilmemiş | cPanel'de Manage SSH Keys → Authorize |
Permission denied (publickey) (anahtar yetkili) | Yanlış anahtar dosyası kullanılıyor | ssh -i ile doğru dosyayı belirtin |
Connection timed out | Yanlış port veya firewall engeli | Doğru SSH portunu doğrulayın; mobil veriyle test edin |
Connection refused | SSH servisi kapalı / paket kısıtı | Firmadan SSH açmasını isteyin |
WARNING: UNPROTECTED PRIVATE KEY FILE | Özel anahtarın izinleri geniş | chmod 600 ~/.ssh/anahtar_dosyasi |
Host key verification failed | Sunucu yeniden kurulmuş | ssh-keygen -R alanadiniz.com sonra tekrar bağlanın |
sudo: command not found | Jailshell kısıtı | Normaldir; kök erişimi gerekir |
-bash: wp: command not found | WP-CLI kurulu değil | Firmadan kurulumunu isteyin veya kendi dizininize kurun |
Özel anahtar izni sorunu Linux ve macOS'ta neredeyse herkesin başına gelir; çözümü tek satırdır:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/cloutr_hosting
Anahtarınızı her bağlantıda parolayla açmaktan yorulduysanız ssh-agent işi devralır; birden fazla sunucu ve anahtarla çalışıyorsanız bu neredeyse zorunlu hâle gelir.
Uzun adresleri ve -i, -p bayraklarını her seferinde yazmamak için yerel makinenizde ~/.ssh/config dosyasına kısa bir kayıt bırakın:
Host hosting
HostName alanadiniz.com
User cpanelkullanicisi
Port 22
IdentityFile ~/.ssh/cloutr_hosting
ServerAliveInterval 60
Bundan sonra ssh hosting yazmanız yeterlidir; scp dosya.zip hosting:~/public_html/ gibi dosya transferleri de aynı kısa adı kullanır. ServerAliveInterval satırı, uzun süren komutlarda oturumun sessizce düşmesini engeller — özellikle NAT arkasındaki ev bağlantılarında bu tek satır çok işe yarar. Farklı sunucular için farklı Host blokları ekleyip her birine kendi anahtarını tanımlayabilirsiniz; böylece yanlış anahtarla bağlanma kaynaklı "Permission denied" hatası da ortadan kalkar.
Sıkça Sorulan Sorular#
cPanel'de SSH erişimi nasıl açılır#
cPanel ana ekranında Güvenlik bölümündeki SSH Erişimi simgesine tıklayıp Manage SSH Keys ekranından anahtarınızı oluşturur veya içe aktarır, ardından anahtarı Authorize edersiniz. Simge hiç görünmüyorsa hosting paketinizde SSH özelliği kapalıdır ve yalnızca hosting firmanız açabilir. Paylaşımlı hostingte SSH varsayılan olarak kapalı tutulur; talebinizde ne için kullanacağınızı belirtirseniz açılma ihtimali artar. Anahtarı yetkilendirmeyi atlarsanız bağlantı "Permission denied (publickey)" hatasıyla reddedilir.
cPanel Terminal aracı ile SSH arasındaki fark nedir#
Terminal aracı tarayıcı içinden çalışır ve hiçbir kurulum, anahtar ya da ek port gerektirmez; panele girdiğiniz oturumu devralır. Gerçek SSH bağlantısı ise bir istemci programı, yetkilendirilmiş anahtar ve açık bir SSH portu ister. Terminal'in sınırı oturumun kalıcı olmamasıdır: sekmeyi kapattığınızda çalışan komut kesilir, bu yüzden uzun işleri screen ile arka plana almalısınız. Ayrıca Terminal ile yerel bilgisayarınızdan scp ile dosya kopyalayamazsınız.
Paylaşımlı hostingte sudo neden çalışmıyor#
Paylaşımlı hostingte jailshell adı verilen kısıtlı bir kabuğa düşersiniz ve bu kabuk sizi kendi ev dizininize hapseder. sudo, su ve sistem servislerini yöneten komutlar tasarım gereği kapalıdır, çünkü aynı sunucuda yüzlerce başka hesap barınır. Hangi kabukta olduğunuzu echo $SHELL komutuyla görebilirsiniz. Sistem paketi kurmak veya servis yeniden başlatmak istiyorsanız kök erişimi olan bir sanal ya da fiziksel sunucuya geçmeniz gerekir.
SSH anahtarı oluşturdum ama bağlanamıyorum#
En yaygın sebep anahtarın Authorize edilmemiş olmasıdır; cPanel'de Manage SSH Keys ekranında anahtarın durumu "authorized" görünmelidir. İkinci sebep yanlış port kullanmaktır: birçok sağlayıcı SSH portunu 22 dışında bir değere taşır ve doğru portu hoş geldiniz e-postasında bildirir. Üçüncü sebep özel anahtar dosyasının izinlerinin fazla geniş olmasıdır; chmod 600 ile düzeltilir. Bağlantıyı ssh -v ile başlatırsanız hangi aşamada durduğunu ayrıntılı olarak görürsünüz.
SSH anahtarı yerine şifreyle bağlanabilir miyim#
Çoğu sunucuda hayır, çünkü kaba kuvvet saldırılarına karşı şifreyle giriş kapatılmıştır ve yalnızca anahtar kabul edilir. Şifreyle giriş açık olsa bile kullanmanız önerilmez: internete açık bir SSH portuna saniyeler içinde otomatik deneme trafiği gelir. Anahtar tabanlı kimlik doğrulama hem daha güvenli hem de günlük kullanımda daha pratiktir. Anahtar dosyanızı mutlaka bir parolayla koruyun, böylece dosya çalınsa bile tek başına işe yaramaz.
SSH ile bağlanınca hangi dizine düşerim#
Bağlandığınızda kendi ev dizininize, yani /home/kullaniciadi yoluna düşersiniz. Web sitesi dosyalarınız bunun altındaki public_html klasöründedir; cd ~/public_html komutuyla oraya geçersiniz. Ev dizininde ayrıca e-posta dosyaları, günlükler ve varsa yedekler bulunur. Paylaşımlı hostingte bu dizinin dışına çıkmanız jailshell tarafından engellenir, yani /etc veya başka kullanıcıların dizinlerini göremezsiniz.
Uzun süren bir komutu SSH oturumu kapanınca nasıl devam ettiririm#
Komutu screen veya tmux gibi bir terminal çoklayıcı içinde başlatın; oturum kopsa bile işlem sunucuda çalışmaya devam eder. screen -S isim ile oturum açar, Ctrl+A ardından D ile ayrılır, screen -r isim ile geri dönersiniz. Alternatif olarak nohup komut & biçimi de işlemi terminalden bağımsız hâle getirir ve çıktıyı nohup.out dosyasına yazar. Özellikle cPanel'in tarayıcı içi Terminal aracında bu şart, çünkü sekmeyi kapatmak oturumu bitirir.
Kapanış#
cPanel'de SSH erişimi, dosya yöneticisi ve FTP ile saatler süren işleri saniyelere indiren bir araç; ama işe yaraması için üç şeyin doğru olması gerekiyor: paketinizde SSH açık olmalı, anahtarınız yalnızca oluşturulmuş değil Authorize edilmiş olmalı ve doğru porta bağlanıyor olmalısınız. Anahtar kurulumuyla uğraşmadan tek seferlik bir iş yapacaksanız cPanel'in tarayıcı içi Terminal aracı çoğu zaman yeterlidir; uzun süren komutlarda screen kullanmayı unutmayın. Paylaşımlı hostingte düştüğünüz jailshell'in sudoya izin vermemesi bir arıza değil, tasarımın kendisidir — sistem düzeyinde iş yapacaksanız zemini değiştirmeniz gerekir.
Kök erişimi isteyen işler (kendi nginx yapılandırmanız, sistem paketi kurulumu, port dinleyen bir servis, Docker) söz konusuysa VDS sunucu paketleri tam yetkili bir kabuk ve kendi güvenlik duvarınızı yönetme imkânı verir. Buna karşılık ihtiyacınız yalnızca WP-CLI, composer ve büyük arşiv işlemleriyse web hosting paketleri SSH erişimiyle birlikte gelir ve sunucu bakımıyla uğraşmazsınız. Sunucunuz var ama kullanıcı, anahtar, port ve güvenlik duvarı yönetimini üstlenmek istemiyorsanız sunucu yönetimi hizmeti bu tarafı devralır.