آقا میخوایم پدر مادر ویندوز رو بیاریم جلو چشماش بابت رفع کردن مشکل ریموت دسکتاپ، مشکلی که مخصوصن برای سرورهای ویندوزی پیش میاد و افکارات آدم رو بهم میریزه. تو این مقاله قرار حرکت های جالبی بزنیم.
موردی که اینجا با هم پیش میبریم جمع بندی کارهایی هستش که تا الان برای تیشوت ریموت دسکتاپ انجام دادم و سعی میکنم همش رو دقیق بهتون بگم ولی به ترتیب و اینا نیست.
به صورت کلی توی نسخه های قبلی ویندوز سرور مثل 2012 بجز این که باید ریموت رو فعال میکردن باید میرفتین توی بخش فایروال ریموت دسکتاپ رو میزاشتید رو پابلیک و هم توی server manager هم باید enable میشد ولی توی 2016 بعد خودش با فهم بود و فقط کافی بود ریموت دسکتاپ رو فعال میکردین و یا یه کاربر بهش معرفی میکردین و تامام.
حالا یه مواقعی شما یه سرویس هایی دارین که تغییراتی اعمال میکنه و یا تغییراتی انجام دادین که نمیدونین چه کردین و یا چی نصب کردین که این طوری شده و حالا هر چیزی که باعث شده ریموت دسکتاپ کار نکنه و با تغییر فایروال و server manager هم باز درست نشده، چاره چیه؟ چاره کار تیشوت ماجراس. و ما میخوایم همین کار رو کنیم.
در مرحله اول قاعدتن باید ببینم که اصن ریموت فعال هستش و این که دسترسی وجود داره یا نه:
اگر مراحل بالا رو دیدید و وصل نمیشد، مطمئن بشید که سرویس ریموت ران هستش یا نه؟
این هم که رانینگ هستش تازه باید برامون قراره جالب بشه و باید بگیم آقا اذیت نکن دیکه، مشکلی برای ما نیست ما میریم سر وقت رجیستری توی آدرس زیر فایل fDenyTSConnections پیدا میکنیم و مقدارش رو صفر میکنیم، مقدار 0 یعنی enable و مقدار 1 یعنی disable (شاید فکر کنین دارم برعکس میگم ولی دقیقن همینه):
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server
اگه شما هم مثل من حوصله گشتن ندارین پاورشل رو باز کنید یه خط پایین رو بزنید تا مقدار صفر بشه:
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -name "fDenyTSConnections" -value 0
برای اطمینان هم میتونیم فایروال رولش رو هم آپدیت بدیم تا پاورشل باز هستش:
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"
بعد این برای اطمینان میریم ببینیم دسترسی کاربرا وجود داره برای ریموت، win+r رو میزنیم و کلمه gpedit.msc رو وارد میکنیم و توی پنجره باز شده دنبال آدرس زیر میگردیم:
Computer Configuration\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Connections
روش کلیک کنیم و فایل زیر رو دوبار کلیک کنیم تا باز بشه و مقدارش رو به enable تغییر میدیم:
Allow users to connect remotely by using Remote Desktop Services.
تا اینجا خیلی خوب پیش رفتیم و اگه بازم ریموت نشد بزنیم میریم سراغ مرحله بعد:
پاورشل رو باز کنید ببینیم اصن RDP دارن listen میکنه یا نه و بعدش میریم سراغ پورتش، توی پاورشل دستور زیر رو میزنیم:
Enter-PSSession -ComputerName <computer name>
بعد از این کلمه qwinsta رو میزنیم قاعدتن توی خروجی باید به ما RDP-tcp رو نشون بده:
میریم سر وقت این که داره روی چی لیسن میکنه، میریم توی رجیستری و دنبال آدرس زیر میگردیم:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\<listener>.
اگه هر مقداری به جز 3389 بود برای فایل PortNumber تغییرش میدیم به 3389.
همین طور برای این که مطمئن بشیم این پورت اشتغال شده توسط نرم افزاری یا نه میتونیم توی پاورشل از دستور زیر استفاده کنیم:
cmd /c 'netstat -ano | find "3389"'
در خروجی به ما میگه رو چه پروتکلی داره لیسن میکنه و این که در اخرش به ما PID میده که میتونیم باهاش سرویس رو پیدا کنیم:
cmd /c 'tasklist /svc | find "PID listening to 3389"'
اگه اختصاص به سرویس دیگهای بود میتونیم تغییر بدیم و یا اگه لازم نیست سرویس رو ببندیم که پورت در دسترس قرار بگیره.
تا این جا اگه پیش رفتین ریموت درست نشد سرورتون رو پاک کنید :) شوخی کردم تا اینجا چیزی بود که من خودم استفاده داشتم ولی صد در صد راه حل های دیکه هم هست که اگه شما باهاش مواجه شدید خیلی خوشحال میشم که کامنت کنید.
cmd /c 'reg export "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-tcp" C:\Rdp-tcp-backup.reg'
Remove-Item -path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-tcp' -Recurse -Force
cmd /c 'regedit /s c:\<filename>.reg'
Restart-Service TermService -Force