Hızlı Özet – WinRM Uzaktan Yönetim
WinRM, Windows sunucularda PowerShell tabanlı uzaktan yönetim sağlayan WS-Management hizmetidir. Port, kimlik doğrulama ve ağ kısıtlaması birlikte yapılandırılmalıdır.
- Temel görev — Uzak Windows makinelerde PowerShell komutları, servis kontrolleri ve yönetim işlemleri çalıştırır.
- Varsayılan portlar — HTTP için 5985/TCP, HTTPS için 5986/TCP kullanılır.
- Bağlantı testi — Test-WSMan, hedefte WS-Management yanıtının alınıp alınmadığını kontrol eder.
- Kimlik doğrulama — Etki alanlarında Kerberos, uygun çalışma grubu senaryolarında NTLM veya HTTPS kullanılabilir.
- Güvenlik — WinRM portlarını internete herkese açık bırakmak yerine VPN veya kaynak IP kısıtlaması uygulayın.
- Otomasyon — Ansible ve PowerShell Remoting, Windows sunucu yönetimini tekrarlanabilir hâle getirir.
WinRM, Windows sunucuları grafik masaüstü açmadan uzaktan yönetmeye yarayan Microsoft WS-Management hizmetidir. PowerShell Remoting bu kanal üzerinden komut çalıştırır; varsayılan portlar HTTP için 5985, HTTPS için 5986'dır. Güvenli kullanım için kimlik doğrulama, firewall ve erişim kaynakları birlikte yapılandırılmalıdır.
İçindekiler
- WinRM nedir ve ne işe yarar?
- WinRM hangi portu kullanır?
- WinRM nasıl etkinleştirilir?
- Uzak PowerShell bağlantısı nasıl yapılır?
- Test-WSMan neyi kontrol eder?
- WinRM'de kimlik doğrulama seçenekleri nelerdir?
- WinRM güvenliği nasıl artırılır?
- WinRM ile Ansible nasıl birlikte çalışır?
- WinRM, RDP ve SSH arasındaki fark
- WinRM Yapılandırmasını Kontrol Edin
- Sık Sorulan Sorular
- Kaynaklar
WinRM nedir ve ne işe yarar?
WinRM, Windows Remote Management’ın kısaltmasıdır. Windows sunucuların ağ üzerinden PowerShell ve WS-Management protokolüyle uzaktan yönetilmesini sağlar. Uzak makinede komut çalıştırabilir, servisleri inceleyebilir, olay günlüklerini okuyabilir ve bazı yönetim görevlerini grafik arayüz açmadan gerçekleştirebilirsiniz.
WinRM, RDP’nin sunduğu masaüstü oturumu yerine komut ve yönetim kanalı sağlar. Microsoft’un WS-Management uygulamasıdır ve SOAP tabanlı iletişim kullanır. Windows Server’da Windows Remote Management hizmetiyle çalışır.
Varsayılan HTTP portu 5985/TCP, HTTPS portu ise 5986/TCP‘dir. HTTP kullanımı tek başına TLS şifrelemesi sağlamaz; güvenlik, Kerberos gibi kimlik doğrulama mekanizmalarına ve ağın güvenilirliğine bağlıdır. HTTPS ise trafiği TLS ile korur.
Özellikle Server Core kurulumlarında WinRM temel yönetim kanallarından biridir. GUI’siz sistem yönetimiyle ilgileniyorsanız Windows Server Core Nedir? GUI’siz Yönetim Rehberi başlığındaki yaklaşım, WinRM ile birlikte anlam kazanır.
Ne yapılmalı – WinRM’yi etkinleştirmeden önce kimlik doğrulama yöntemini, kullanılacak portu ve izin verilecek kaynak IP aralığını belirleyin.
WinRM hangi portu kullanır?
WinRM iki standart dinleme noktası kullanır:
| Protokol | Varsayılan port | Şifreleme | Tipik kullanım |
|---|---|---|---|
| HTTP | 5985/TCP | Trafik TLS ile şifrelenmez | Kerberos kullanılan etki alanı içi ağlar |
| HTTPS | 5986/TCP | TLS sertifikasıyla şifrelenir | Etki alanı dışı veya güvenilmeyen ağlar |
Portların açık olması bağlantının kesin olarak çalışacağı anlamına gelmez. WinRM hizmeti, listener yapılandırması, Windows Firewall profili, kimlik doğrulama yöntemi ve hedef bilgisayarın güvenilirlik ayarları birlikte kontrol edilmelidir.
İnternete açık bir VPS üzerinde 5985/TCP portunu tüm adreslere açmak, yönetim yüzeyini gereksiz biçimde büyütür. Güvenlik duvarında yalnızca yönetim ağına veya belirlenmiş yönetici IP’lerine izin verin.
Ne yapılmalı – 5985 veya 5986 portunu genel internete açmak yerine VPN, özel ağ ya da dar bir kaynak IP listesi kullanın.
İpucu
İpucu: İlk bağlantı denemesinden önce Test-WSMan -ComputerName sunucu-adı çalıştırın. Bu küçük test, PowerShell komutunun yetkisini değil WinRM iletişim katmanının yanıtını kontrol eder.
WinRM nasıl etkinleştirilir?
Yönetici yetkili PowerShell oturumunda Enable-PSRemoting -Force komutu WinRM ve PowerShell Remoting yapılandırmasını etkinleştirir. Komut, hizmeti başlatır, listener oluşturur ve uygun Windows Firewall kurallarını etkinleştirir. winrm quickconfig da temel WinRM yapılandırması için kullanılabilir.
Enable-PSRemoting -Force
winrm enumerate winrm/config/listener
İkinci komut listener kayıtlarını listeler. Çıktıda Transport = HTTP ve Port = 5985 gibi değerler görülür. Çıktı gelmiyorsa servis veya listener yapılandırması tamamlanmamış olabilir.
Servis durumunu ayrıca doğrulayın:
Get-Service WinRM
Get-WSManInstance -ResourceURI winrm/config/listener -Enumerate
WinRM servisinin Running durumda olması gerekir. Listener’ın Address = * olarak görünmesi, makinenin tüm yerel adreslerinde dinleme yapabileceği anlamına gelir. Çoklu ağ kartı bulunan sunucularda bu davranışın gerçekten istenip istenmediğini kontrol edin.
Ne yapılmalı – Kurulumdan sonra hem Get-Service WinRM çıktısını hem de listener adresi, transport ve port değerlerini inceleyin.
Uzak PowerShell bağlantısı nasıl yapılır?
Tek bir komut çalıştırmak için Invoke-Command kullanılabilir:
Invoke-Command -ComputerName SRV01 -ScriptBlock {
Get-Service WinRM
}
Bu komut SRV01 üzerinde çalışır ve uzak makinedeki WinRM servisinin durumunu döndürür. Birden fazla sunucuda aynı kontrol yapılacaksa bilgisayar adlarını dizi olarak gönderebilirsiniz:
$servers = 'SRV01','SRV02','SRV03'
Invoke-Command -ComputerName $servers -ScriptBlock {
[pscustomobject]@{
ComputerName = $env:COMPUTERNAME
WinRM = (Get-Service WinRM).Status
FreeGB = [math]::Round((Get-PSDrive C).Free / 1GB, 2)
}
}
Kimlik bilgilerini açıkça belirtmek gerektiğinde Get-Credential kullanılabilir:
$credential = Get-Credential
Enter-PSSession -ComputerName SRV01 -Credential $credential
Enter-PSSession etkileşimli bir uzak kabuk açar. Oturumu kapatmak için Exit-PSSession çalıştırılır. Toplu işler ve servis kontrolleri için Invoke-Command, kısa süreli manuel inceleme için Enter-PSSession daha uygundur.
Ne yapılmalı – Önce Test-WSMan ile iletişim katmanını doğrulayın, ardından uzak komut çalıştırın.
Test-WSMan neyi kontrol eder?
Test-WSMan, hedefte WS-Management hizmetinin yanıt verip vermediğini test eder. Bu komut uygulama içindeki yetkileri veya belirli bir PowerShell komutunun çalışacağını kanıtlamaz. Ağ erişimi, WinRM listener’ı ve protokol yanıtı hakkında hızlı bir ilk kontrol sunar.
Test-WSMan -ComputerName SRV01
Başarılı yanıtta protokol sürümü ve ürün bilgileri görünür. WinRM cannot complete the operation hatası alındığında DNS çözümlemesini, 5985 veya 5986 portuna erişimi, WinRM servis durumunu, listener’ı ve Windows Firewall kuralını sırayla inceleyin.
Resolve-DnsName SRV01
Test-NetConnection SRV01 -Port 5985
Get-NetFirewallRule -DisplayGroup 'Windows Remote Management'
Test-NetConnection başarılı olsa bile kimlik doğrulama hatası devam edebilir. Böyle bir durumda sorun ağ katmanında değil; yetki, güvenilir ana bilgisayar veya Kerberos yapılandırmasında aranmalıdır.
WinRM’de kimlik doğrulama seçenekleri nelerdir?
Etki alanı ortamlarında Kerberos genellikle tercih edilen yöntemdir. Hedefe bilgisayar adıyla bağlanıldığında Active Directory kimlik doğrulaması devreye girebilir. NTLM, bazı etki alanı dışı senaryolarda kullanılabilir; yapılandırma ve güvenlik sınırları yine de dikkatle değerlendirilmelidir.
Çalışma grubu ortamlarında hedef makinenin güvenilir ana bilgisayar listesine eklenmesi gerekebilir:
Set-Item WSMan:\Client\TrustedHosts -Value '192.0.2.10' -Concatenate
TrustedHosts değerini * yapmak her hedefi güvenilir kabul eder. Üretim ortamında kötü bir varsayılandır. Gerekirse tek bir IP adresi veya dar bir DNS listesi kullanın. Parola tabanlı bağlantılarda HTTPS listener tercih edin; kimlik bilgilerini korumak için yalnızca ağ izolasyonuna güvenmeyin.
WinRM yapılandırmasını incelemek için:
winrm get winrm/config
winrm get winrm/config/service
winrm get winrm/config/client
Bu komutlar istemci, servis ve genel yapılandırma değerlerini ayrı ayrı gösterir. Yazım hataları küçük görünür; yanlış çıktının peşinden uzun süre götürebilir.
Dikkat
Dikkat: TrustedHosts değerini * yapmak tüm hedefleri güvenilir kabul eder. Çalışma grubu ortamında bile tek bir IP adresi veya sınırlı bir DNS listesi kullanın.
WinRM güvenliği nasıl artırılır?
WinRM’yi doğrudan internete açmak yerine VPN, özel ağ veya kaynak IP kısıtlaması kullanın. Ev lab’ında Raspberry Pi üzerinde WireGuard ile iç ağa dönmek, yönetim portlarını genel internete açmaktan daha kontrollü bir modeldir. Kurumsal ağlarda yönetim trafiği ayrı bir VLAN veya güvenlik grubu üzerinden sınırlandırılabilir.
HTTPS listener oluşturulacaksa sunucu adıyla eşleşen bir sertifika gerekir. Sertifika depoya alındıktan sonra listener, sertifikanın parmak iziyle ilişkilendirilir. Sertifikanın süresi, subject/SAN alanları ve istemci tarafından güvenilir bulunup bulunmadığı kontrol edilmelidir.
Yönetici hesaplarının tamamını uzaktan kullanmak yerine görev temelli yetkilendirme uygulayın. PowerShell JEA (Just Enough Administration), belirli kullanıcıların yalnızca tanımlı komutları çalıştırmasına izin verebilir. Windows olay günlüklerinde Microsoft-Windows-WinRM/Operational kaydını ve güvenlik olaylarını düzenli izleyin.
SMB dosya paylaşımı için kullanılan 445/TCP portu ile WinRM portları aynı işlevi görmez. Dosya kopyalama ihtiyacı varsa WinRM üzerinden PowerShell Remoting kullanabilir veya ayrı olarak Windows Server’da SMB Dosya Paylaşımı Kurulumu yaklaşımını değerlendirebilirsiniz.
Ne yapılmalı – İnternete açık yönetim yerine VPN veya IP kısıtlaması uygulayın; HTTPS kullanıyorsanız sertifika yenileme takvimi ve alarmı oluşturun.
Sahadan not
Bir Ansible denemesinde envanterde ansible_port=5986 tanımlıydı, fakat hedef sunucuda yalnızca HTTP listener bulunuyordu. winrm enumerate winrm/config/listener çıktısında Transport = HTTP ve Port = 5985 değerlerini gördüm; portu 5985 ile eşleştirince bağlantı kuruldu.
WinRM ile Ansible nasıl birlikte çalışır?
Ansible, Windows hedeflerde SSH yerine çoğunlukla WinRM kullanır. Ansible denetleyicisinde Windows host’ları tanımlarken bağlantı eklentisi, hedef adresi, port, kullanıcı ve kimlik doğrulama yöntemi belirtilir. HTTPS için genellikle 5986 portu ve uygun sertifika doğrulama ayarları kullanılır.
[windows]
srv01 ansible_host=192.0.2.20
[windows:vars]
ansible_connection=winrm
ansible_port=5986
ansible_winrm_transport=ntlm
ansible_winrm_server_cert_validation=validate
Üretim ortamında sertifika doğrulamasını kapatmak hızlı bir test sağlayabilir; kalıcı yapılandırma olarak güvenli değildir. Etki alanı, Kerberos ve sertifika altyapısı mevcutsa NTLM yerine ortama uygun daha güçlü doğrulama seçilmelidir.
Ansible kullanmadan önce aynı hedefte Test-WSMan ve basit bir Invoke-Command testi yapın. Bağlantı katmanı çalışmıyorsa sorunu playbook içinde aramak, teşhisi gereksiz yere karmaşıklaştırır. Önce küçük doğrulama.
Örnek
Örnek senaryo: Üç Windows VPS'i aynı servis kontrolünden geçirmek için Invoke-Command ile bilgisayar adlarını dizi olarak gönderin. Önce Test-NetConnection ile 5985 veya 5986 portunu doğrulayın; port kapalıysa playbook ya da PowerShell betiği sorunu çözmez.
WinRM, RDP ve SSH arasındaki fark
WinRM, komut ve Windows yönetim işlemleri için yerel uzaktan yönetim katmanıdır. RDP grafik masaüstü oturumu açar; SSH ise platformlar arası etkileşimli kabuk ve dosya aktarımı için yaygın bir protokoldür. Windows Server’da OpenSSH da kullanılabilir. Windows’a özgü yönetim cmdlet’leri ve PowerShell Remoting senaryolarında WinRM daha doğal bir entegrasyon sunar.
| Yöntem | Temel amaç | Varsayılan port | Uygun senaryo |
|---|---|---|---|
| WinRM | PowerShell ve Windows yönetimi | 5985/5986 | Toplu komut, servis ve yapılandırma |
| RDP | Grafik masaüstü | 3389/TCP | GUI gerektiren işlemler |
| SSH | Uzak kabuk ve dosya aktarımı | 22/TCP | Platformlar arası terminal yönetimi |
Sunucuyu yalnızca RDP ile yönetmek, özellikle Server Core veya otomasyon ağırlıklı ortamlarda gereksiz bir bağımlılık yaratabilir. WinRM ve PowerShell Remoting, aynı işlemi tekrarlanabilir komutlarla yapmayı kolaylaştırır. RDP’yi masaüstü gerektiren bakım işlerine ayırın.
Sunucu değişikliği öncesinde geri dönüş planı da hazır olmalıdır. Windows VPS üzerinde snapshot kullanıyorsanız VPS Snapshot Nedir? Anlık Yedekleme Rehberi başlığındaki sınırları dikkate alın; snapshot, uygulama tutarlılığı ve harici yedekleme ihtiyacını ortadan kaldırmaz.
WinRM Yapılandırmasını Kontrol Edin
- WinRM servisinin Running durumda olduğunu doğrulayın.
- Listener'ın HTTP veya HTTPS üzerinde doğru portu dinlediğini kontrol edin.
- 5985/5986 erişimini yalnızca gerekli kaynak IP'lerle sınırlandırın.
- Test-WSMan ile iletişim katmanını sınayın.
- Etki alanı dışında TrustedHosts değerini dar bir listeyle yapılandırın.
- HTTPS kullanıyorsanız sertifika adı, süresi ve güven zincirini doğrulayın.
- WinRM olay günlüklerini ve başarısız oturum açma kayıtlarını izleyin.
Windows sunucularınızı yönetim ağı üzerinden WinRM ile erişilebilir hâle getirirken önce küçük bir Test-WSMan kontrolü yapın. Portu açmak kolaydır; doğru sınırlandırılmış bir yönetim kanalı kurmak asıl iştir.
Sık Sorulan Sorular
WinRM nedir?
WinRM, Windows Remote Management'ın kısaltmasıdır ve Windows sunucuların WS-Management protokolü üzerinden uzaktan yönetilmesini sağlar. PowerShell Remoting, Invoke-Command ve Enter-PSSession gibi araçlar WinRM'yi kullanabilir. Yönetici bu kanal üzerinden uzak komut çalıştırabilir, servis durumunu inceleyebilir ve yapılandırma işlemlerini grafik masaüstü açmadan gerçekleştirebilir.
WinRM hangi portu kullanır?
WinRM varsayılan olarak HTTP için 5985/TCP, HTTPS için 5986/TCP kullanır. HTTP bağlantısında trafik TLS ile şifrelenmez; etki alanı içindeki Kerberos kimlik doğrulaması ve ağ güvenliği önem taşır. İnternet veya güvenilmeyen ağ senaryolarında HTTPS listener, geçerli sertifika ve kaynak IP kısıtlaması tercih edilmelidir.
WinRM nasıl etkinleştirilir?
Yönetici yetkili PowerShell oturumunda Enable-PSRemoting -Force komutu WinRM ve PowerShell Remoting yapılandırmasını etkinleştirir. Ardından Get-Service WinRM ile servisi, winrm enumerate winrm/config/listener ile listener'ı kontrol edin. Windows Firewall profilinin aktif olduğunu ve 5985 ya da 5986 portunun yalnızca gereken kaynaklara açık olduğunu da doğrulayın.
Test-WSMan ne işe yarar?
Test-WSMan, hedef bilgisayardaki WS-Management hizmetinin yanıt verip vermediğini kontrol eder. Komut, uygulama yetkilerinin veya çalıştırılacak her PowerShell komutunun başarılı olacağını garanti etmez. Yanıt alınamıyorsa DNS, port erişimi, WinRM servisi, listener ve Windows Firewall sırasıyla incelenmelidir.
WinRM güvenli mi?
WinRM güvenli olabilir, ancak varsayılan yapılandırmayı internete açık bırakmak doğru değildir. Yönetim portlarını VPN, özel ağ veya kaynak IP allowlist'i arkasında tutun. Etki alanında Kerberos kullanın; etki alanı dışı bağlantılarda HTTPS ve geçerli sertifika yapılandırın. TrustedHosts değerini * yapmaktan kaçının ve yönetici hesaplarını sınırlayın.
WinRM ile RDP arasındaki fark nedir?
WinRM komut satırı ve PowerShell tabanlı uzaktan yönetim kanalıdır; RDP ise grafik masaüstü oturumu sağlar. Toplu servis kontrolleri, envanter ve otomasyon için WinRM daha uygundur. GUI gerektiren bakım işlemlerinde RDP kullanılabilir. Server Core gibi masaüstü bileşenleri bulunmayan kurulumlarda WinRM temel yönetim yöntemlerinden biridir.
Kaynaklar
- Microsoft Learn – Windows Remote Management — learn.microsoft.com
- Microsoft Learn – Enable-PSRemoting — learn.microsoft.com
- Microsoft Learn – WinRM Security — learn.microsoft.com