SSH Kullanarak Bir Sunucuya Bağlanma¶
Bu makalede
Linux üzerinden SSH ile bir sunucuya bağlanma¶
Linux üzerinden SSH ile sunucunuza bağlanmak için şu adımları izleyin:
-
Sunucunun IP adresini kontrol edin. Sunucunun IP adresini bildiğinizden emin olun. Bilmiyorsanız, Invapi Kontrol Paneli üzerinden bulabilirsiniz.
-
Bir SSH istemcisi yükleyin (gerekliyse). Çoğu Linux dağıtımında bir SSH istemcisi genellikle varsayılan olarak yüklü gelir. Bunu kontrol etmek için bir terminal açın ve şu komutu çalıştırın:
İstemci yüklüyse, program sürümünü göreceksiniz.
SSH istemcisi yüklü değilse, dağıtımınızın paket yöneticisini kullanarak yükleyin:
-
Ubuntu/Debian için:
-
CentOS/RHEL için:
-
-
Sunucuya bağlanın. Bir terminal açın ve aşağıdaki komutu girin:
Örneğin:
-
Şifrenizi girin. Bağlantı kurulduktan sonra sistem, belirtilen kullanıcı için şifrenizi girmenizi isteyecektir. Sunucunun giriş bilgileri ve şifresi, sunucu teslim edildiğinde size e-posta yoluyla gönderilir.
Windows üzerinden SSH ile bir sunucuya bağlanma¶
-
Sunucunun IP adresini kontrol edin. Sunucunun IP adresini bildiğinizden emin olun. Bilmiyorsanız, HOSTKEY.com web sitesindeki Invapi Kontrol Paneli üzerinden https://invapi.hostkey.com adresinden bulabilirsiniz.
-
Windows 11'de, SSH üzerinden bir sunucuya bağlanmanın birkaç yolu vardır:
OpenSSH kullanarak (yerleşik uygulama)¶
-
Windows 10'un Ekim 2018 Güncellemesi ile birlikte SSH istemcisi varsayılan olarak dahil edilmiştir. Bunu kontrol etmek için PowerShell'i çalıştırın ve şu komutu yürütün:
İstemci yüklüyse, kullanımı için çıktı seçeneklerini göreceksiniz.
-
SSH istemcisi yüklü değilse, Settings üzerinden etkinleştirin:
1. **Settings** > **System** > **Additional components** yolunu izleyin. 2. `OpenSSH Client` öğesini bulun ve yükleyin. -
Sunucuya bağlanın. PowerShell'i açın ve aşağıdaki komutu girin:
Örneğin:
-
Şifrenizi girin. Bağlantı kurulduktan sonra sistem, belirtilen kullanıcı için şifrenizi girmenizi isteyecektir. Sunucunun giriş bilgileri ve şifresi, sunucu teslim edildiğinde size e-posta yoluyla gönderilir.
PuTTY kullanarak (alternatif istemci):¶
-
PuTTY'yi resmi web sitesinden https://www.putty.org indirin.
-
PuTTY'yi başlatın ve "Host Name (or IP address)" alanına sunucunun IP adresini girin.
-
Bağlantı türünü
SSHolarak belirtin ve Open butonuna tıklayın. -
Sunucuya bağlanın:
-
Host Name (or IP address) alanına sunucunun IP adresini girin.
-
SSH için port değiştirildiyse port 22 olarak belirtin.
-
Open butonuna tıklayın. Açılan pencerede kullanıcı adınızı ve şifrenizi girin.
-
-
Şifrenizi girin. Bağlantı kurulduktan sonra sistem, belirtilen kullanıcı için şifrenizi girmenizi isteyecektir. Sunucunun giriş bilgileri ve şifresi, sunucu teslim edildiğinde size e-posta yoluyla gönderilir.
Not
-
Daha güvenli kimlik doğrulaması için şifre yerine SSH anahtarları kullanılması önerilir. SSH anahtarlarının kurulum talimatlarını dağıtımınızın dokümantasyonunda veya rehberimizde bulabilirsiniz.
-
Connection refusedhatası alıyorsanız, hedef sunucuda SSH sunucusunun çalıştığından ve güvenlik duvarında (firewall) 22 numaralı portun açık olduğundan emin olun.
SSH Bağlantı Sorunlarını Giderme¶
Bu teşhis işlemini gerçekleştirerek SSH bağlantısının nerede kesildiğini belirleyebileceksiniz: kendi tarafınızda mı, sunucu tarafında mı (sshd, firewall, ayarlar) yoksa sağlayıcınızın tarafında mı. Adımları sırasıyla uygulayın ve komut çıktısını kaydedin; destek ekibi bu çıktıyı isteyecektir.
Dikkat
Aşağıdaki komutlarda SERVER_IP yerine kendi sunucunuzun IP adresini yazın. Sunucu üzerindeki komutlar root olarak veya sudo ile yürütülmelidir. Sunucuya SSH üzerinden erişilemiyorsa, hosting panelindeki web konsolu (VNC/KVM) üzerinden giriş yapın.
Adım 1. Kendi bilgisayarınızdan kontrol edin¶
Amaç, sunucuya ulaşılabiliyor olup olmadığını ve 22 numaralı portun yanıt verip vermediğini belirlemektir. Bu komutlar, bağlandığınız bilgisayarda yürütülür.
-
Sunucu ağ erişilebilirliği
Yanıt alınmaması mutlaka bir hata olduğu anlamına gelmez: ICMP genellikle bir güvenlik duvarı tarafından engellenir. Asıl kontrol bir sonraki adımdadır.
-
22 numaralı port yanıt veriyor mu?
nc -vz -w 5 SERVER_IP 22 # nc yüklü değilse: timeout 5 bash -c '</dev/tcp/SERVER_IP/22' && echo OPEN || echo CLOSEDSonuç Anlamı succeeded / open Port açık, ağ sorunsuz—sorun kimlik doğrulama veya sshd ayarlarında (Adım 4) Connection refused Sunucuya ulaşılabiliyor ancak 22 numaralı portta dinleme yapan bir servis yok veya firewall REJECT gönderiyor (Adımlar 2–3) timed out Paket kaybı yaşanıyor: firewall DROP, sağlayıcı filtresi veya rota üzerindeki bir engel (Adımlar 3 ve 5) No route to host Sunucuya giden bir rota yok veya sunucu kapalı (panelden durumunu kontrol edin) -
nmap ile hassas kontrol
Port durumunu ve üzerinde neyin çalıştığını gösterir. Kurulum:
sudo apt install nmapveyasudo dnf install nmap.# port 22 durumu ve SSH sunucu sürümü sudo nmap -Pn -sV -p 22 SERVER_IP # durum nedeni ve sunucuya giden rota ile birlikte sudo nmap -Pn -p 22 --reason --traceroute SERVER_IP # 22'yi diğer portlarla karşılaştırın (sadece 22 mi yoksa her şeyi mi filtreler?) sudo nmap -Pn -p 22,80,443,2222 --reason SERVER_IP # SSH algoritmaları – eğer betik çalışırsa, anahtar değişimi çalışıyor demektir nmap -Pn -p 22 --script ssh2-enum-algos SERVER_IP-Pnparametresi, ping engellenirse nmap'in sunucunun kapalı olduğunu varsaymaması için gereklidir.nmap Durumu Anlamı open (reason syn-ack) Port açık, sshd yanıt veriyor; -sVbir OpenSSH sürümü göstermelidirclosed (reason reset) Sunucuya ulaşılabiliyor ancak sshd portu dinlemiyor (Adım 2) filtered (reason no-response) Paket kaybı yaşanıyor: firewall DROP veya rota üzerindeki bir engel (Adımlar 3 ve 5) filtered (reason admin-prohibited) Firewall bir reddetme yanıtı veriyor—sunucuda veya sağlayıcıda REJECT kuralı var (Adım 3) open, but -sVshows no version or tcpwrappedTCP bağlantısı geçiyor ancak SSH banner'ı alınamıyor—TCP Wrappers, fail2ban veya DPI (Adımlar 4–5) Eğer
--tracerouteyanıtları, 80/443 portları açık kalırken sağlayıcınızın düğümlerinde kesiliyorsa, bu özellikle 22 numaralı portta bir filtreleme olduğunun güçlü bir işaretidir. Çıktıyı destek ekibi için kaydedin: komuta-oN nmap.txtekleyin. -
Detaylı bağlantı günlüğü
Bağlantının hangi aşamada koptuğunu gösterir:
Connecting toaşamasında takılıyorsa — ağ sorunu.Connection establishedsonrası kopma (örneğinSSH2_MSG_KEXINITveyaConnection reset by peeraşamasında) — tipik DPI filtreleme veya fail2ban belirtisi.Permission denied— ağ sorunsuz ancak anahtar veya şifre hatalı.
-
Sunucuya özel TCP port 22 üzerinden rota
sudo traceroute -T -p 22 SERVER_IP # veya paket kaybı özeti: sudo mtr -T -P 22 -r -c 50 SERVER_IP > mtr.txtYanıtların hangi düğümde durduğunu gözlemleyin. Sağlayıcınızın ağı içinde bir kopma olması, sunucuyla ilgili bir sorundan ziyade rota üzerindeki bir filtrelemeye işaret eder.
-
Kendi ağınızı eleyin
Adım 2'yi mobil erişim noktası (hotspot) kullanarak tekrarlayın ve iş/kurumsal firewall'unuzun giden port 22'yi engelleyip engellemediğini kontrol edin.
Adım 2. SSH sunucusu çalışıyor mu?¶
Sunucu üzerinde gerçekleştirilir (hosting web konsolu aracılığıyla). Debian/Ubuntu'da servis adı ssh; CentOS/RHEL/Alma/Rocky'de ise sshd şeklindedir.
-
Servis durumu
active (running)olmalıdır. Eğerinactiveveyafailedise, servisi başlatın ve açılışta çalışması için etkinleştirin:Servis başlatılamazsa, nedeni günlüklerde (logs) listelenecektir.
-
Paket yüklü değilse
Unit ssh.service could not be foundhatası: -
sshd hangi portu ve adresi dinliyor?
Çıktı Anlamı 0.0.0.0:22veya[::]:22Her şey yolunda; tüm arayüzlerde dinleniyor 127.0.0.1:22Sadece yerel olarak dinleniyor — ListenAddressayarını düzeltin (Adım 4)Diğer port, örn: :2222O portu kullanarak bağlanın: ssh -p 2222 user@SERVER_IPBoş sshd çalışmıyor veya porta bağlanamıyor — yukarıdaki günlükleri inceleyin -
Ubuntu 22.10+ ve socket aktivasyonu
Bu sürümlerde port,
sshd_configdosyasının yanı sırassh.socketiçinde de tanımlanmıştır. Kontrol etmek için:Portu değiştirdikten sonra şunu çalıştırın:
-
Sunucunun kendisinden test etme
Eğer yerel olarak çalışıyor ancak dışarıdan çalışmıyorsa, sorun firewall veya ağdadır (Adımlar 3 ve 5).
Adım 3. Sunucu Güvenlik Duvarı (Firewall)¶
Tipik olarak sunucuda üç güvenlik duvarından biri çalışır: ufw (Ubuntu), firewalld (CentOS/RHEL) veya ham iptables/nftables. Üçünü de kontrol edin—bazen ikisi aynı anda aktif olabilir.
Dikkat
Şu anda SSH üzerinden bağlıysanız ve web konsolu üzerinden değilse, önce 22 numaralı porta izin verin ve ancak ondan sonra firewall'u etkinleştirin veya yeniden başlatın; aksi takdirde erişiminizi kaybedersiniz.
ufw
firewalld
sudo firewall-cmd --state
sudo firewall-cmd --list-all
# eğer ssh servisler listesinde değilse:
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
iptables / nftables
dpt:22 veya tcp dport 22 içeren ve eylemi DROP / REJECT olan kuralların yanı sıra, 22 numaralı port için bir izin kuralı olmadan policy DROP olan kuralları arayın. Kaynak (-s) veya ülke bazlı ( geoip modülleri veya ipset listeleri kullanarak) erişimi kısıtlayan kurallara dikkat edin: bunlar nedeniyle sunucuya kendi ülkeniz dışındaki her yerden erişilemeyebilir.
Zincirin başında SSH'a geçici olarak izin vermek için (yeniden başlatmaya kadar):
Bağlantı bundan sonra çalışıyorsa, neden bulunmuştur; kuralı firewall (ufw/firewalld) üzerinden veya iptables-save kullanarak kaydedin.
Adım 4. sshd Ayarları ve Güvenlik Araçları¶
Port açıksa ancak bağlantı kopuyorsa veya kimlik doğrulama başarısız oluyorsa, yapılandırmanızı ve olası engellemeleri kontrol edin.
-
Nihai sshd yapılandırması
sshd_config.d/içindeki dosyalar da dahil olmak üzere:sudo sshd -T | grep -Ei '^(port|listenaddress|permitrootlogin|passwordauthentication|pubkeyauthentication|allowusers|allowgroups|denyusers|maxstartups)'Kontrol edin:
port 22;listenaddress 0.0.0.0(127.0.0.1değil);- eğer bu parametre ayarlanmışsa kullanıcınızın
allowusersiçinde olup olmadığını; permitrootloginvepasswordauthentication— bunların gereken değerlere ayarlandığından emin olun.
-
Yeniden başlatmadan önce sözdizimi (syntax) kontrolü
/etc/ssh/sshd_configdosyasında yapılan herhangi bir değişiklikten sonra, yeniden başlatmadan önce her zaman sözdizimini kontrol edin: -
fail2ban
Başarısız giriş denemelerinden sonra IP adresinizi engellemiş olabilir:
sudo fail2ban-client status sshd # IP adresinizin engelini kaldırmak için: sudo fail2ban-client set sshd unbanip YOUR_IPDış IP adresinizi kendi bilgisayarınızdan
curl -4 ifconfig.mekomutuyla bulabilirsiniz. Benzer şekilde, yüklüyse CrowdSec veya sshguard'ı kontrol edin. -
TCP Wrappers (eski sistemlerde)
hosts.denydosyasındakisshd: ALLgibi bir satır,hosts.allowiçinde belirtilmeyen herkesi engeller. -
Bağlantı denemeniz sırasında sunucunun gördüğü
Bunu sunucuda çalıştırın, ardından istemciden bağlanmayı deneyin:
sudo journalctl -u ssh -u sshd -f # ikinci bir pencerede – paketlerin sunucuya ulaşıp ulaşmadığını kontrol edin: sudo tcpdump -ni any tcp port 22 and host YOUR_IP- Eğer
tcpdumphiçbir şey göstermiyorsa—paketler sunucuya ulaşmıyor; sorun ağ yolundadır (Adım 5). - Eğer paketler ulaşıyor ancak
sshdgünlüğü boşsa—sunucu firewall'u tarafından düşürülüyorlardır (Adım 3).
- Eğer
Adım 5. Özellikle ülkenizden erişim sorunu¶
Sunucuda her şey yolundaysa (Adımlar 2–4) ancak ülkenizden gelen paketler ulaşmıyorsa, ülkenizden diğer ülkelerden olan port erişilebilirliğini karşılaştırmanız gerekir.
-
Portu harici konumlardan kontrol edin
check-host.net servisini kullanın → TCP port sekmesi,
SERVER_IP:22girin. Sonuçları kendi ülkeniz ve uluslararası düğümler için kontrol edin.Kendi ülkenizden Diğer ülkelerden Sonuç Başarısız Çalışıyor Kendi ülkenizden yönlendirme (routing) filtresi veya sunucu/host tarafında coğrafi engelleme (geoblocking) Başarısız Başarısız Sunucu kaynaklı sorun — Adım 2–4'e dönün Çalışıyor Çalışıyor İnternet servis sağlayıcınız (ISP) veya yerel ağ kaynaklı sorun -
Kendi ülkenizdeki sağlayıcıları karşılaştırın
Ev interneti ve mobil operatörler genellikle farklı davranır. Eğer biri üzerinden çalışıyor diğeri üzerinden çalışmıyorsa, engel belirli bir sağlayıcı tarafındadır.
-
Etkilenen portun özellikle 22 olup olmadığını kontrol edin
Sunucuda
/etc/ssh/sshd_configdosyasına geçici olarak ikinci bir port ekleyin (orijinalPort 22satırı kalmalıdır):Firewall'da
2222/tcpportuna izin verin (Adım 3), ardından şunu çalıştırın:Ve bağlanın:
SELinux yüklü sistemlerde (CentOS/RHEL), şu ek adımı gerçekleştirin:
Eğer 2222 üzerinden çalışıyor ancak 22 üzerinden çalışmıyorsa, standart port filtreleniyor demektir.
-
DPI filtreleme belirtileri
TCP bağlantısı kuruluyor (
ncaçık gösteriyor), ancakssh -vvvanahtar değişimi sırasında sonlanıyor; veya bağlantı birkaç saniye çalışıp sonra donuyor. Bu durumda sunucu ayarları neden değildir — lütfen günlükleri (logs) destek ekibine gönderin.
Destek mesajınıza neleri dahil etmelisiniz¶
Sorun çözülmezse, lütfen şunları bize gönderin — bu, teşhis süresini kısaltacaktır:
- Sunucu IP'si ve genel (public) IP'niz (
curl -4 ifconfig.me), şehir ve ISP; nmap.txtdosyası venc -vz -w 5 SERVER_IP 22komutunun sonucu;ssh_debug.logdosyası (Adım 1, madde 4);mtr.txtdosyası veyatraceroute -T -p 22çıktısı;- Sunucu çıktısı:
systemctl status ssh,ss -tlnp | grep :22ve firewall kuralları (ufw status verbose/firewall-cmd --list-all/iptables -L INPUT -n -v); - check-host.net üzerinden alınan TCP port kontrol sonucu bağlantısı;
- Bağlantının mobil internet üzerinden ve 2222 portundan çalışıp çalışmadığı (test ettiyseniz).
Dikkat
Şifre veya özel anahtarlarınızı (private keys) göndermeyin. ssh -vvv günlüğü bunları içermez, ancak göndermeden önce lütfen kontrol edin.