Ali
Ali
خواندن ۴ دقیقه·۲ سال پیش

تیشوت ناموسی ریموت دسکتاپ !!!

آقا می‌خوایم پدر مادر ویندوز رو بیاریم جلو چشماش بابت رفع کردن مشکل ریموت دسکتاپ، مشکلی که مخصوصن برای سرورهای ویندوزی پیش میاد و افکارات آدم رو بهم می‌ریزه. تو این مقاله قرار حرکت های جالبی بزنیم.

موردی که اینجا با هم پیش می‌بریم جمع بندی کارهایی هستش که تا الان برای تیشوت ریموت دسکتاپ انجام دادم و سعی میکنم همش رو دقیق بهتون بگم ولی به ترتیب و اینا نیست.

به صورت کلی توی نسخه های قبلی ویندوز سرور مثل 2012 بجز این که باید ریموت رو فعال میکردن باید می‌رفتین توی بخش فایروال ریموت دسکتاپ رو می‌زاشتید رو پابلیک و هم توی server manager هم باید enable می‌شد ولی توی 2016 بعد خودش با فهم بود و فقط کافی بود ریموت دسکتاپ رو فعال می‌کردین و یا یه کاربر بهش معرفی می‌کردین و تامام.

حالا یه مواقعی شما یه سرویس هایی دارین که تغییراتی اعمال می‌کنه و یا تغییراتی انجام دادین که نمی‌دونین چه کردین و یا چی نصب کردین که این طوری شده و حالا هر چیزی که باعث شده ریموت دسکتاپ کار نکنه و با تغییر فایروال و server manager هم باز درست نشده، چاره چیه؟ چاره کار تیشوت ماجراس. و ما می‌خوایم همین کار رو کنیم.

در مرحله اول قاعدتن باید ببینم که اصن ریموت فعال هستش و این که دسترسی وجود داره یا نه:

فعال بودن ریموت (برای همه کاربران)
فعال بودن ریموت (برای همه کاربران)
فعال بودن ریموت در server manager
فعال بودن ریموت در 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 &quotfDenyTSConnections&quot -value 0

برای اطمینان هم می‌تونیم فایروال رولش رو هم آپدیت بدیم تا پاورشل باز هستش:

Enable-NetFirewallRule -DisplayGroup &quotRemote Desktop&quot

بعد این برای اطمینان می‌ریم ببینیم دسترسی کاربرا وجود داره برای ریموت، 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 &quot3389&quot'

در خروجی به ما میگه رو چه پروتکلی داره لیسن میکنه و این که در اخرش به ما PID میده که می‌تونیم باهاش سرویس رو پیدا کنیم:

cmd /c 'tasklist /svc | find &quotPID listening to 3389&quot'

اگه اختصاص به سرویس دیگه‌ای بود می‌تونیم تغییر بدیم و یا اگه لازم نیست سرویس رو ببندیم که پورت در دسترس قرار بگیره.

تا این جا اگه پیش رفتین ریموت درست نشد سرورتون رو پاک کنید :) شوخی کردم تا اینجا چیزی بود که من خودم استفاده داشتم ولی صد در صد راه حل های دیکه هم هست که اگه شما باهاش مواجه شدید خیلی خوشحال میشم که کامنت کنید.

  • دو تا راهکار دیکه هست که من تست نکردم خودم چون نداشتم موردش رو ولی در ادامه میارمش، اگر روی سرورتون وب سرور دارید و از certificate self-sign استفاده کرده باشید این مورد میتونه تاثیر گذار باشه که باید برای این مورد به MMC برید و در بخش remote desktop فایلی با عنوان certification وجود داره که باید حذفش کنید تا با این cert احراز نشه در زمان ریموت زدن.
  • و اون یکی راه اگه خودتون فایل رجیستری برای ریموت دارید و میخواید تنظیمات خودتون رو وارد کنید میتونید از طریق زیر اقدام کنین:
  • اول از فایل فعلی یه بکاپ بگیرید:
cmd /c 'reg export &quotHKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-tcp&quot 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
ریموت دسکتاپسرورویندوزremote desctop
خلاصه‌ای از همه چی، یه DevOps ساده که سعی میکنه چیزای جدید رو یاد بگیره، و با لبخند ادامه میده.
شاید از این پست‌ها خوشتان بیاید