Uzak Masaüstü (RDP) bağlanmıyorsa sorunu tahminle değil sırayla eleyerek çözersiniz. Zincir kısadır: sunucu ayakta mı, 3389 portu dinliyor mu, güvenlik duvarı geçiriyor mu, Uzak Masaüstü etkin mi, kullanıcınız yetkili mi, ağ düzeyi kimlik doğrulaması uyuşuyor mu. Bu altı basamağı yukarıdan aşağıya kontrol ettiğinizde ilk takıldığınız yer, sorunun tam olarak bulunduğu yerdir.
Destek taleplerinde gördüğümüz en yaygın hata sıçramadır: kullanıcı doğrudan kayıt defteri ayarlarıyla oynamaya başlar, oysa sunucu zaten yeniden başlatma sürecindedir ve beş dakika beklese bağlanacaktır. Sıra atlamayın. Aşağıda her basamağın tek komutluk testi, hata mesajlarını sebep ve çözümle eşleştiren bir tablo ve her yol tıkandığında kullanacağınız konsol kurtarma yöntemi var.
Bağlantıyı ilk kez kuruyorsanız ve henüz hiç girmediyseniz, önce Uzak Masaüstü bağlantı rehberindeki temel adımları uyguladığınızdan emin olun. Bu sayfa, bağlantının bir zamanlar çalıştığı ya da çalışması gerektiği hâlde çalışmadığı durumlar için.
Eleme Sırası: Hangi Basamaktasınız?#
RDP arızalarının neredeyse tamamı altı kategoriye giriyor. Sıra önemlidir çünkü her basamak bir üsttekinin çalıştığını varsayar.
| # | Basamak | Tek komutluk test | Başarısızsa |
|---|---|---|---|
| 1 | Sunucu ayakta mı? | ping SUNUCU_IP | Panel konsoluna geçin, güç durumuna bakın |
| 2 | 3389 dinliyor mu? | Test-NetConnection IP -Port 3389 | Servis veya güvenlik duvarı |
| 3 | Güvenlik duvarı geçiriyor mu? | Get-NetFirewallRule -DisplayGroup "Uzak Masaüstü" | Gelen kuralı ekleyin/etkinleştirin |
| 4 | Uzak Masaüstü etkin mi? | fDenyTSConnections değeri | 0 yapıp servisi başlatın |
| 5 | Kullanıcı yetkili mi? | net localgroup "Remote Desktop Users" | Kullanıcıyı gruba ekleyin |
| 6 | NLA / CredSSP uyuşuyor mu? | Hata metnine bakın | İki tarafı da güncelleyin |
Bir uyarı: ping cevabı almak sunucunun sağlıklı olduğu anlamına gelmez, yalnızca ağ yığınının ayakta olduğunu gösterir. Aynı şekilde ping’in cevapsız kalması da sunucunun kapalı olduğunu kanıtlamaz — birçok yapılandırmada ICMP baştan kapalıdır. Kesin bilgi panel konsolundadır.
1–2. Basamak: Sunucu Ayakta mı, Port Dinliyor mu?#
Kendi bilgisayarınızdan başlayın. PowerShell’in Test-NetConnection komutu hem ping hem port testini tek çıktıda verir:
# KENDİ BİLGİSAYARINIZDA çalıştırın
Test-NetConnection 203.0.113.10 -Port 3389
# ComputerName : 203.0.113.10
# RemoteAddress : 203.0.113.10
# RemotePort : 3389
# PingSucceeded : True
# TcpTestSucceeded : False <-- port kapalı ya da engelli
# Farklı port kullanıyorsanız
Test-NetConnection 203.0.113.10 -Port 3390
# Adres bir alan adıysa hangi IP'ye gittiğini görün
Resolve-DnsName vds.alanadiniz.com
Çıktıyı okuma kılavuzu üç satırdan ibaret. PingSucceeded: False ve TcpTestSucceeded: False ise sunucuya hiç ulaşamıyorsunuz demektir — panel konsoluna geçin. PingSucceeded: True ama TcpTestSucceeded: False ise işletim sistemi ayakta, sorun 3389 portundadır. İkisi de True ise ağ tarafı temizdir ve sorun kimlik doğrulama katmanındadır; doğrudan 5. ve 6. basamağa atlayın.
Sunucuya konsoldan girebiliyorsanız portun gerçekten dinlendiğini içeriden doğrulayın:
# SUNUCUDA çalıştırın (panel konsolu ya da açık bir oturum)
Get-NetTCPConnection -LocalPort 3389 -State Listen
# Klasik yöntem
netstat -ano | findstr ":3389"
# TCP 0.0.0.0:3389 0.0.0.0:0 LISTENING 1284
# Uzak Masaüstü Hizmetleri servisi çalışıyor mu?
Get-Service TermService, UmRdpService | Format-Table Name,Status,StartType
# Durmuşsa başlatın
Start-Service TermService
# RDP hangi portu kullanıyor? (değiştirilmiş olabilir)
Get-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name PortNumber
LISTENING satırını göremiyorsanız servis durmuş ya da RDP devre dışı bırakılmıştır. Portun 3389 dışında bir değere ayarlandığını görürseniz bağlantı adresine portu da yazmanız gerekir: 203.0.113.10:3390. Port kavramına yabancıysanız port nedir ve nasıl açılır sayfası temelini anlatıyor.
3. Basamak: Güvenlik Duvarı Kuralı#
En sık suçlu bu. Özellikle yeni kurulmuş bir sunucuda ya da güvenlik duvarı ayarlarıyla oynandıktan sonra RDP kuralı kapanmış olabilir. Windows Defender Güvenlik Duvarı’nda RDP için hazır bir kural grubu bulunur:
# SUNUCUDA - mevcut RDP kurallarını listele
Get-NetFirewallRule -DisplayGroup "Uzak Masaüstü" |
Select-Object DisplayName, Enabled, Direction, Action
# İngilizce sistemde grup adı farklıdır
Get-NetFirewallRule -DisplayGroup "Remote Desktop" |
Select-Object DisplayName, Enabled, Direction, Action
# Hazır kural grubunu etkinleştir
Enable-NetFirewallRule -DisplayGroup "Uzak Masaüstü"
# Özel port kullanıyorsanız kendi kuralınızı ekleyin
New-NetFirewallRule -DisplayName "RDP-3390" -Direction Inbound `
-Protocol TCP -LocalPort 3390 -Action Allow -Profile Any
# Yalnızca kendi IP'nizden erişime izin vermek (önerilir)
New-NetFirewallRule -DisplayName "RDP-Sadece-Ofis" -Direction Inbound `
-Protocol TCP -LocalPort 3389 -Action Allow -RemoteAddress 198.51.100.25
Grafik arayüzden yapmak isterseniz yol şu: Windows Defender Güvenlik Duvarı → Gelişmiş Ayarlar → Gelen Kuralları. Listede “Uzak Masaüstü — Kullanıcı Modu (TCP-In)” kuralını bulup etkin olduğundan emin olun. Kural setinin tamamını gözden geçirmek isterseniz güvenlik duvarı yapılandırma rehberi Windows ve Linux tarafını birlikte ele alıyor.
4–6. Basamak: Uzak Masaüstü, Kullanıcı Yetkisi ve NLA#
Port açık ve servis çalışıyor ama hâlâ bağlanamıyorsanız iki ihtimal kaldı: Uzak Masaüstü sunucu ayarlarında kapalıdır ya da girmeye çalıştığınız kullanıcı yetkili değildir.
Uzak Masaüstü’nü etkinleştirme#
# SUNUCUDA - mevcut durum (0 = etkin, 1 = kapalı)
Get-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' `
-Name fDenyTSConnections
# Etkinleştir
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' `
-Name fDenyTSConnections -Value 0
# Güvenlik duvarı kuralını da açıp servisi yeniden başlat
Enable-NetFirewallRule -DisplayGroup "Uzak Masaüstü"
Restart-Service TermService -Force
Grafik karşılığı: Denetim Masası → Sistem → Uzak ayarlar altındaki “Bu bilgisayara uzaktan bağlantılara izin ver” seçeneği. Windows Server 2022 ve 2025’te aynı ayara Sunucu Yöneticisi → Yerel Sunucu → Uzak Masaüstü satırından da ulaşabilirsiniz.
Kullanıcı yetkisi: Remote Desktop Users grubu#
“Kullanıcı hesabı uzaktan oturum açma yetkisine sahip değil” mesajı doğrudan bunu söyler. Yerel yöneticiler zaten yetkilidir, ama normal bir kullanıcı için grup üyeliği gerekir:
# SUNUCUDA - grup üyelerini listele
net localgroup "Remote Desktop Users"
# Türkçe sistemde:
net localgroup "Uzak Masaüstü Kullanıcıları"
# Kullanıcıyı gruba ekle
net localgroup "Remote Desktop Users" batihost /add
# PowerShell karşılığı
Add-LocalGroupMember -Group "Remote Desktop Users" -Member batihost
Get-LocalGroupMember -Group "Remote Desktop Users"
.\kullaniciadi ya da SUNUCUADI\kullaniciadi şeklinde yazın. Sadece kullaniciadi yazdığınızda istemci onu etki alanı hesabı sanıp doğrulayamaz ve “oturum açma girişimi başarısız oldu” hatası alırsınız.6. Basamak: NLA uyuşmazlığı#
Ağ Düzeyi Kimlik Doğrulaması (NLA), kimlik bilgilerinizin oturum açılmadan önce doğrulanmasını sağlar. Güvenlik açısından doğru olan açık tutmaktır: NLA kapalıyken sunucu, kimliği doğrulanmamış her istek için oturum kaynağı ayırır ve bu, kaba kuvvet saldırılarını kolaylaştırır.
Sorun, istemci ile sunucunun aynı dili konuşmadığı durumlarda çıkar. Eski bir Windows sürümü, güncellenmemiş bir istemci ya da üçüncü taraf bir RDP uygulaması NLA’yı karşılayamayabilir.
# SUNUCUDA - NLA durumu (1 = NLA açık, 0 = kapalı)
Get-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' `
-Name UserAuthentication
# GEÇİCİ olarak kapat (sorunu izole etmek için)
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' `
-Name UserAuthentication -Value 0
Restart-Service TermService -Force
# Sorun çözülünce MUTLAKA geri açın
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' `
-Name UserAuthentication -Value 1
Restart-Service TermService -Force
“Kimlik doğrulama hatası oluştu. İstenen işlev desteklenmiyor.”#
Bu mesaj CredSSP şifreleme uyuşmazlığıdır ve neredeyse her zaman şu tabloya oturur: taraflardan biri güncellenmiş, diğeri kalmıştır. Microsoft, CredSSP’deki bir açığı kapatırken güncellenmiş istemcilerin güncellenmemiş sunuculara bağlanmasını engelledi. Yani hata aslında bir korumadır.
Doğru çözüm sunucuyu güncellemektir. Ancak sunucuya girmek için RDP gerekiyorsa ve RDP de bu yüzden çalışmıyorsa klasik bir kısır döngüye düşersiniz. Bu durumda ya panel konsolundan girip sunucuyu güncelleyin ya da istemci tarafında ayarı geçici olarak gevşetin:
# KENDİ BİLGİSAYARINIZDA - geçici çözüm, yönetici PowerShell
$yol = 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters'
New-Item -Path $yol -Force | Out-Null
Set-ItemProperty -Path $yol -Name AllowEncryptionOracle -Value 2 -Type DWord
# Sunucuyu güncelledikten sonra GERİ ALIN
Remove-ItemProperty -Path $yol -Name AllowEncryptionOracle -ErrorAction SilentlyContinue
AllowEncryptionOracle = 2 ayarı, kapatılmış bir güvenlik açığını istemcinizde yeniden açar. Bunu yalnızca sunucuya girip güncelleme yapabilmek için, geçici olarak kullanın. Sunucu güncellendikten sonra değeri kaldırmayı unutan bir yönetici, kendi bilgisayarını aylarca savunmasız bırakmış olur.Hata Mesajı, Sebebi ve Çözümü#
Ekranda gördüğünüz metni aşağıdaki tabloda bulun. Sol sütun mesajın Türkçe ve İngilizce karşılıklarını içeriyor.
| Hata mesajı | Sebep | Çözüm |
|---|---|---|
| “Uzak Masaüstü uzak bilgisayara bağlanamıyor” (0x204) | Port kapalı, güvenlik duvarı engelliyor ya da TermService durmuş | 3389 dinlemesini doğrulayın, gelen kuralı etkinleştirin, servisi başlatın |
| “Bilgisayarınız uzak bilgisayara bağlanamıyor” / “host not found” | Yanlış IP, DNS kaydı eski ya da sunucu kapalı | Resolve-DnsName ile adresi doğrulayın, panelden IP’yi kontrol edin |
| “Kimlik doğrulama hatası oluştu. İstenen işlev desteklenmiyor.” | CredSSP yama uyuşmazlığı | İki tarafı da güncelleyin; acilse istemcide AllowEncryptionOracle |
| “Uzak bilgisayar Ağ Düzeyi Kimlik Doğrulaması gerektiriyor” | İstemci NLA’yı karşılayamıyor | İstemciyi güncelleyin ya da sunucuda UserAuthentication değerini geçici 0 yapın |
| “Kullanıcı hesabı uzaktan oturum açma yetkisine sahip değil” | Kullanıcı Remote Desktop Users grubunda değil | net localgroup "Remote Desktop Users" ad /add |
| “Oturum açma girişimi başarısız oldu” | Yanlış parola ya da eksik kullanıcı adı biçimi | Adı .\kullanici veya SUNUCUADI\kullanici olarak yazın |
| “Bu bilgisayara bağlantı sayısı sınırlı ve tüm bağlantılar kullanımda” | İki yönetici oturumu dolu, biri boşta kalmış | qwinsta + rwinsta, ya da mstsc /admin |
| “Uzak Masaüstü istemci erişim lisansı yok” | RDS rolü kurulu ve lisans deneme süresi dolmuş | RDS rolünü kaldırın ya da CAL lisansı tanımlayın |
| “Lisans protokolünde hata” (istemci tarafı) | İstemcideki bozuk MSLicensing kaydı | İstemcide HKLM\SOFTWARE\Microsoft\MSLicensing anahtarını silin |
| Bağlanıyor ama siyah ekran | Takılı oturum veya bit eşlem önbelleği | rwinsta ile oturumu sıfırlayın, önbelleği kapatın |
| “İç hata oluştu” (internal error) | Bozuk .rdp önbelleği, MTU ya da VPN çakışması | Bağlantı dosyasını silip yeniden oluşturun, VPN’i kapatıp deneyin |
Oturum Sınırı ve Boşta Kalan Oturumlar#
Bu, ekip hâlinde çalışan sunucularda en sık yaşanan sorundur ve teknik bir arıza değildir. Windows Server, Uzak Masaüstü Hizmetleri rolü kurulmadan aynı anda iki yönetici oturumuna izin verir. Üçüncü kişi bağlanmak istediğinde kapıyı kapalı bulur.
İşin can sıkıcı tarafı şu: kullanıcılar oturumu düzgün kapatmak yerine pencerenin sağ üst köşesindeki çarpıya basıyor. O oturum kapanmaz, bağlantısı kesilmiş hâlde açık kalır ve kotayı işgal etmeye devam eder. Sabah gelen üçüncü kişi de bağlanamaz.
# KENDİ BİLGİSAYARINIZDAN oturumları listeleyin
qwinsta /server:203.0.113.10
# SESSIONNAME USERNAME ID STATE TYPE
# services 0 Disc
# console 1 Conn
# rdp-tcp#3 yavuz 2 Active rdpwd
# emre 3 Disc
# Boştaki oturumu kapatın (ID = 3)
rwinsta 3 /server:203.0.113.10
# Konsol oturumuna bağlanmayı deneyin - kotayı kullanmaz
mstsc /v:203.0.113.10 /admin
Disc durumundaki oturumlar bağlantısı kopmuş ama hâlâ açık oturumlardır. Bunları rwinsta ile kapatabilirsiniz — ancak dikkat: oturum sıfırlanınca o kullanıcının kaydedilmemiş çalışması kaybolur. Kapatmadan önce kime ait olduğuna bakın.
Kalıcı çözüm, boşta kalan oturumların otomatik kapanmasını ayarlamaktır. Grup İlkesi’nde Bilgisayar Yapılandırması → Yönetim Şablonları → Windows Bileşenleri → Uzak Masaüstü Hizmetleri → Oturum Zaman Sınırları altında “Etkin olmayan Uzak Masaüstü Hizmetleri oturumları için zaman sınırı ayarla” ilkesini 2 saat gibi bir değere getirin. Bu tek ayar, aynı sorunla ilgili destek taleplerinin çoğunu ortadan kaldırıyor.
IP Değişimi, DNS ve Yanlış Adres#
Bazen sorun sunucuda hiç değildir. Bağlandığınız adres artık o sunucuya gitmiyordur.
Sunucu taşındıysa, yeniden kurulduysa ya da paket değiştirildiyse IP adresi değişmiş olabilir. Alan adı üzerinden bağlanıyorsanız DNS kaydının eski IP’yi göstermesi de aynı sonucu doğurur. En kötüsü de şu: eski IP başka bir müşteriye atanmış olabilir ve siz farkında olmadan yabancı bir sunucuya bağlanmaya çalışırsınız.
# Adres hangi IP'ye çözümleniyor?
Resolve-DnsName vds.alanadiniz.com -Type A
# Yerel DNS önbelleğini temizleyin
Clear-DnsClientCache
ipconfig /flushdns
# Yol boyunca nerede kesiliyor?
Test-NetConnection 203.0.113.10 -TraceRoute
# Panelde yazan IP ile karşılaştırın, gerekirse doğrudan IP ile bağlanın
mstsc /v:203.0.113.10:3389
Panelde yazan IP ile bağlanmaya çalıştığınız adresi karşılaştırın. Fark varsa DNS kaydını güncelleyin; A kaydı düzenlemeyi DNS kayıtları rehberi anlatıyor. TTL değerini geçişten önce düşürmek, yayılmayı dakikalar seviyesine indirir.
Bir başka sessiz sebep de kendi tarafınızdaki ağdır. Kurumsal ağların, otel ve kafe bağlantılarının ve bazı mobil operatörlerin 3389 giden trafiğini engellediği olur. Test etmenin en hızlı yolu telefonunuzun hotspot’undan denemektir; oradan bağlanabiliyorsanız sorun sunucuda değil, bulunduğunuz ağdadır. Bu arada aynı belirti yoğun bir saldırı sırasında da görülebilir; sunucunuz sürekli erişilemez oluyorsa DDoS koruması tarafına da bakmakta fayda var.
Son Çare: Panelden Konsol (VNC) ile Kurtarma#
Yukarıdaki her yol tıkandıysa geriye tek seçenek kalır ve bu seçenek her zaman çalışır: sağlayıcı panelindeki konsol erişimi. Konsol, sunucunun sanal ekranına doğrudan bağlanır. Ağ yığınından, güvenlik duvarından, RDP servisinden ve NLA ayarlarından tamamen bağımsızdır — sunucuya fiziksel olarak monitör ve klavye bağlamış gibi olursunuz.
Kendinizi güvenlik duvarı kuralıyla dışarıda bıraktığınızda, RDP servisini yanlışlıkla devre dışı bıraktığınızda ya da bir güncelleme sonrası sunucu açılış ekranında takıldığında konsol tek kurtarma yoludur. Panelde genelde “Konsol”, “VNC” ya da “noVNC” adıyla geçer.
Konsola girdikten sonra izleyeceğiniz sıra:
-
Sunucunun gerçekten açılıp açılmadığına bakın#
Oturum açma ekranı geliyorsa işletim sistemi ayaktadır ve sorun ağ/RDP tarafındadır. Ekran siyahsa ya da kurtarma ekranındaysa sorun daha derindedir; bu durumda snapshot’a dönmek en hızlı çözümdür.
-
RDP servisini ve portu kontrol edin#
Konsolda PowerShell açıp
Get-Service TermServicevenetstat -ano | findstr ":3389"çalıştırın. Servis durmuşsaStart-Service TermServiceçoğu zaman yeterlidir. -
Güvenlik duvarını geçici gevşetin#
Kuralın engellediğini doğrulamak için güvenlik duvarını kısa süreliğine kapatıp deneyin, sonra hemen açıp doğru kuralı yazın. Uzun süre kapalı bırakmayın.
-
Ağ ayarlarını doğrulayın#
ipconfig /allile sunucunun IP adresinin ve ağ geçidinin panelde yazanla aynı olduğundan emin olun. Statik IP yanlış girilmişse sunucu ağa hiç çıkamaz. -
Değişikliği yaptıktan sonra yeniden test edin#
Kendi bilgisayarınızdan
Test-NetConnectionile portu tekrar deneyin. Konsolu, RDP’nin çalıştığını doğrulamadan kapatmayın.
Panelinizde konsol erişimi göremiyorsanız ya da konsol da açılmıyorsa sorun sanallaştırma katmanındadır; bu noktada destek talebi açmak doğru adımdır. Batihost tarafındaki 156 TL’den başlayan VDS paketlerinde panel konsolu standarttır, yani RDP tamamen kilitlense bile sunucuya erişiminiz kesilmez.
Tekrarını Önlemek#
Sorunu çözdükten sonra bir daha yaşamamak için üç şey yapın.
RDP’yi herkese açık bırakmayın. Mümkünse yalnızca kendi IP adresinizden erişime izin verin. Sabit IP’niz yoksa en azından güçlü parola ve hesap kilitleme ilkesi tanımlayın — 3389 portu internetteki en çok taranan portlardan biridir ve zayıf parolalı bir Windows sunucusu günler içinde bulunur.
Oturum zaman sınırlarını ayarlayın. Boşta kalan oturumların otomatik kapanması, “bağlantı sayısı sınırlı” hatasını tamamen ortadan kaldırır.
Riskli değişikliklerden önce geri dönüş noktası bırakın. Güvenlik duvarı, RDP yapılandırması ve ağ ayarları — bu üçü kendinizi kilitleme potansiyeli en yüksek alanlar. Snapshot almak otuz saniye sürüyor. Sunucu izleme kurmadıysanız erişilemez hâle geldiğini de geç öğrenirsiniz; basit bir erişilebilirlik testi bile birşey değişmeden haber verir.
Özetle#
RDP arızalarında kural tek: sırayla eleyin. Sunucu ayakta mı, 3389 dinliyor mu, güvenlik duvarı geçiriyor mu, Uzak Masaüstü etkin mi, kullanıcı yetkili mi, NLA uyuşuyor mu. Test-NetConnection IP -Port 3389 komutu bu zincirin ilk yarısını tek satırda kapatır; TcpTestSucceeded değeri False ise sorun ağ katmanında, True ise kimlik doğrulama katmanındadır.
Mesaja göre yön bulun: “kimlik doğrulama hatası” CredSSP demektir ve iki tarafı da güncelleyerek çözülür, “bağlantı sayısı sınırlı” lisans değil boşta kalmış oturum demektir ve qwinsta ile rwinsta ikilisiyle biter, “yetkiniz yok” mesajı Remote Desktop Users grubunu işaret eder. Ve her yol tıkandığında panel konsolu her zaman oradadır — yeter ki nerede olduğunu önceden bilin.