اتصال به ریموت دسکتاپ ویندوز: از اولین ورود تا رفع خطاها

اتصال به ریموت دسکتاپ ویندوز: از اولین ورود تا رفع خطاها

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

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

اطلاعات اتصال را از کجا برداری

سه چیز لازم داری و هر سه در پنل کاربری، صفحه‌ی همان سرویس هست: آدرس IP سرور، نام کاربری و رمز. روی یک ویندوز سرور تازه، کاربر مدیر تقریباً همیشه Administrator است و رمز را موقع نصب ویندوز از پنل تعیین می‌کنی یا بعداً از همان‌جا بازنشانی‌اش می‌کنی. اگر هنوز نصب ویندوز تمام نشده، صبر کن؛ تا پایان نصب، پورت RDP بالا نمی‌آید.

برنامه‌ی درست برای هر سیستم‌عامل

سیستم‌عاملبرنامهاز کجا
ویندوزRemote Desktop Connection (mstsc)داخل خود ویندوز است؛ Win+R بعد mstsc
مک، آیفون/آیپد، اندرویدWindows AppMac App Store / App Store / Google Play
لینوکسRemmina یا xfreerdpمخزن توزیع (apt) یا Flathub

ویندوز: mstsc

ساده‌ترین مسیر. Win+R را بزن، mstsc تایپ کن و Enter. آدرس IP را بگذار، بعد نام کاربری Administrator و رمز. یا مستقیم با آرگومان باز کن:

mstsc /v:203.0.113.5

مک، آیفون و اندروید: Windows App

کلاینت رسمی مایکروسافت روی مک و موبایل «Windows App» نام دارد. اگر راهنمای قدیمی‌تری از Microsoft Remote Desktop حرف می‌زند، منظورش همین برنامه است. طبق مستندات مایکروسافت، Windows App روی Windows، macOS، iOS/iPadOS، Android/Chrome OS و مرورگر در دسترس است و می‌تواند به یک «Remote PC» معمولی هم وصل شود. برای اتصال به سرور مجازی خودت لازم نیست با حساب کاری وارد شوی؛ گزینه‌ی افزودن یک PC را بزن و آی‌پی، نام کاربری و رمز را بده.

لینوکس: Remmina یا xfreerdp

Remmina یک کلاینت گرافیکی است که RDP را پشتیبانی می‌کند. روی اوبونتو و دبیان:

sudo apt install remmina remmina-plugin-rdp

اگر خط فرمان را ترجیح می‌دهی، xfreerdp:

xfreerdp /v:203.0.113.5 /u:Administrator /cert:tofu /dynamic-resolution

دو نکته. رمز را داخل فرمان ننوشته‌ایم. xfreerdp هنگام اتصال آن را می‌پرسد، و این‌طوری رمز در تاریخچه‌ی شل نمی‌ماند. گزینه‌ی /cert:tofu هم یعنی گواهی سرور را بار اول بی‌قید می‌پذیرد و دفعات بعد، اگر گواهی عوض شده باشد، اتصال را رد می‌کند.

دستگاه تو mstsc / Windows App / Remmina اینترنت فایروال ویندوز پورت 3389 فقط آی‌پی تو سرور ویندوز سرویس RDP
مسیر اتصال: کلاینت تو از اینترنت به فایروال ویندوز می‌رسد و فقط اگر آی‌پی‌ات مجاز باشد به سرویس RDP روی پورت 3389 وصل می‌شود.

رفع خطاهای رایج اتصال

قبل از هر کاری یک چیز را روشن کن: آیا پورت 3389 اصلاً باز است؟ این تست تقریباً نیمی از خطاها را از هم جدا می‌کند.

# از یک ویندوز دیگر
Test-NetConnection -ComputerName 203.0.113.5 -Port 3389
# از مک یا لینوکس
nc -zv 203.0.113.5 3389

اگر خروجی Test-NetConnection بنویسد TcpTestSucceeded : True یعنی پورت باز است و مشکل جای دیگری است. اگر False بود، یا nc بگوید connection refused/timed out، اصلاً به سرویس RDP نرسیده‌ای و باید سراغ فایروال، آی‌پی اشتباه یا خاموش بودن سرور بروی.

«رایانه‌ی راه دور پیدا نشد» یا کد 0x204

روی مک و موبایل این وضعیت معمولاً با کد 0x204 دیده می‌شود و در mstsc با پیام پیدا نشدن رایانه. هر دو یک معنا دارند: کلاینت به پورت 3389 سرور نرسیده است.

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

رمز درست است ولی رد می‌شود

شایع‌ترین علت، نام کاربری است نه رمز. اگر نام کاربری کوتاه کار نکرد، به شکل .\Administrator امتحان کن تا ویندوز حتماً آن را حساب محلی در نظر بگیرد.

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

خطای CredSSP و encryption oracle remediation

پیام کامل این شکلی است: «An authentication error has occurred. The function requested is not supported... This could be due to CredSSP encryption oracle remediation.»

علت را مایکروسافت در صفحه‌ی عیب‌یابی خودش توضیح می‌دهد: بعد از وصله‌ی CredSSP برای CVE-2018-0886، اگر یک طرف (کلاینت یا سرور) به‌روز باشد و طرف دیگر نه، سیاست Encryption Oracle Remediation اتصال ناامن را می‌بندد.

راه‌حل درست ساده است. Windows Update را روی سرور کامل کن تا هر دو طرف وصله شوند. دور زدنش با رجیستری (AllowEncryptionOracle=2) ممکن است، اما خود مایکروسافت هشدار می‌دهد که این کار یک اتصال ناامن باز می‌کند و سرور را در معرض حمله می‌گذارد. وصله کن، دور نزن.

قطع شدن مکرر اتصال

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

اندازه بگیر. یک پینگ ممتد بگیر و دنبال گم شدن بسته و نوسان تأخیر بگرد:

ping -t 203.0.113.5        # ویندوز
ping 203.0.113.5           # مک و لینوکس

اگر درصدی از بسته‌ها گم می‌شود یا تأخیر بین مقادیر خیلی متفاوت بالا و پایین می‌پرد، مشکل مسیر شبکه است و هیچ تنظیم RDP‌ای آن را حل نمی‌کند. مؤثرترین کار انتخاب دیتاسنتری نزدیک‌تر است. اگر از ایران کار می‌کنی و پایداری اولویت دارد، سرور مجازی شیراز مسیر کوتاه‌تری به تو دارد. اگر هم برای متاتریدر دنبال نزدیکی به بروکر اروپایی هستی، روی سرور مجازی انگلستان ویندوز سرور را از همان پنل نصب می‌کنی و تأخیرت به بازارهای اروپا کمتر می‌شود.

صفحه‌ی سیاه بعد از ورود

وصل می‌شوی، احراز هویت رد می‌شود، اما فقط سیاهی و یک نشانگر ماوس می‌بینی. معمولاً یعنی نشست باز شده ولی پوسته‌ی ویندوز (explorer.exe) بالا نیامده.

اول صبر کن. گاهی یک آپدیت در حال اعمال است و بعد از نیم دقیقه خودش می‌آید. اگر نیامد، در خود نشست Ctrl+Alt+End را بزن تا Task Manager باز شود، بعد از منوی File گزینه‌ی Run new task و explorer.exe را اجرا کن. اگر باز هم سیاه ماند، در تنظیمات کلاینت عمق رنگ را پایین‌تر بیاور و persistent bitmap caching را خاموش کن و دوباره وصل شو.

امن کردن RDP روی اینترنت

RDP باز روی اینترنت از راه‌های رایج نفوذ است و CISA هم به همین دلیل محدود کردنش را توصیه می‌کند. ربات‌ها فضای آدرس را برای پورت 3389 اسکن می‌کنند و رمزها را شبانه‌روز امتحان می‌کنند. چند کار، به ترتیب اثر:

۱) پورت را به آی‌پی خودت محدود کن

بیشترین اثر را همین دارد. در PowerShell سرور یک قانون ورودی بساز که فقط آی‌پی اینترنتی خودت اجازه‌ی پورت 3389 داشته باشد:

New-NetFirewallRule -DisplayName 'RDP-MyIP' -Direction Inbound -Protocol TCP -LocalPort 3389 -RemoteAddress 203.0.113.5 -Action Allow

بعد قانون باز و عمومی RDP را که به Any اجازه می‌دهد غیرفعال کن، وگرنه محدودسازی بی‌اثر می‌ماند. اگر آی‌پی خانگی‌ات ثابت نیست، هر بار که عوض شد باید این قانون را به‌روز کنی. در عوض ربات‌ها پشت در می‌مانند.

۲) NLA را روشن نگه دار

Network Level Authentication کاری می‌کند که کاربر پیش از ساخته‌شدن نشست کامل، احراز هویت شود. روی ویندوز سرور معمولاً پیش‌فرض روشن است؛ برای اطمینان:

Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name 'UserAuthentication' -Value 1

۳) رمز قوی و قفل حساب

یک رمز بلند و تصادفی مهم‌تر از هر ترفند دیگری است. بعد قفل حساب بعد از چند تلاش ناموفق را روشن کن تا حمله‌ی رمزکوبی کند و بی‌فایده شود:

net accounts /lockoutthreshold:5 /lockoutduration:15 /lockoutwindow:15

یعنی ۵ تلاش ناموفق، قفل ۱۵ دقیقه‌ای.

این قفل یک روی دیگر هم دارد که CISA به آن اشاره کرده: کسی که عمداً رمز اشتباه بزند می‌تواند حساب خودت را قفل کند و برای مدتی بیرونت نگه دارد. برای همین مدت قفل را کوتاه نگه دار و این قدم را کنار محدود کردن آی‌پی بگذار. به‌تنهایی کافی نیست.

همان راهنما یک توصیه‌ی دیگر هم دارد که بیشتر نادیده گرفته می‌شود: با حساب مدیر از راه دور کار روزمره نکن. یک کاربر معمولی بساز، به گروه Remote Desktop Users اضافه‌اش کن و برای کار هر روز با همان وصل شو. Administrator را برای وقتی نگه دار که واقعاً تنظیمات سیستم را عوض می‌کنی.

net user trader "YourLongRandomPassword" /add
net localgroup "Remote Desktop Users" trader /add

به‌جای trader هر نامی که می‌خواهی بگذار. اگر ویندوز سرورت فارسی یا زبان دیگری است، نام گروه هم ترجمه شده؛ آن را با net localgroup بدون آرگومان پیدا کن.

۴) عوض کردن پورت فقط سروصدا کم می‌کند

بردن RDP از 3389 به یک پورت دیگر توصیه‌ی رایجی است، ولی صادق باشیم: تغییر پورت فقط سروصدای ربات‌ها را کم می‌کند. امنیتی اضافه نمی‌کند. هر کسی که هدفمند دنبال سرور تو باشد با یک اسکن پورت را پیدا می‌کند. این کار لاگ را تمیزتر می‌کند، اما جای محدودسازی فایروال و رمز قوی را نمی‌گیرد.

۵) بهترین کار: RDP را مستقیم روی اینترنت نگذار

خود CISA توصیه می‌کند وقتی RDP لازم است، از طریق یک VPN امن با احراز هویت دومرحله‌ای یا یک دروازه‌ی دسترسی zero-trust در دسترس باشد و مستقیم روی اینترنت باز نماند. برای یک سرور متاتریدر تک‌کاربره شاید VPN زیادی به نظر برسد، ولی اگر داده‌ی حساس یا چند کاربر داری، همین خط دفاعی ارزش راه‌اندازی دارد.

کجا این سرور را بگیری

سروری که از پنلش ویندوز سرور نصب می‌شود، کار راه‌اندازی را کوتاه می‌کند. لازم نیست خودت ISO بالا بیاوری. سه گزینه‌ای که ویندوز را از پنل نصب می‌کنند:

برای متاتریدر معمولاً رم و پردازنده‌ی زیاد لازم نداری؛ پایداری اتصال و نزدیکی به بروکر بیشتر فرق می‌گذارد. اول کوچک بگیر و اگر چند چارت سنگین اجرا کردی ارتقا بده.

منابع

پرسش‌های پرتکرار

نام برنامه‌ی ریموت دسکتاپ مایکروسافت روی مک و موبایل چیست؟

Windows App. اگر راهنمای قدیمی‌تری از Microsoft Remote Desktop حرف می‌زند، منظورش همین برنامه است. برای اتصال به یک سرور مجازی معمولی لازم نیست حتماً وارد حساب کاری شوی.

چطور بفهمم پورت 3389 سرورم باز است؟

از یک ویندوز دیگر دستور Test-NetConnection -ComputerName <ip> -Port 3389 را بزن؛ اگر TcpTestSucceeded برابر True بود پورت باز است. روی مک و لینوکس همین کار را با nc -zv <ip> 3389 انجام بده.

خطای CredSSP encryption oracle remediation را چطور رفع کنم؟

راه درست، کامل کردن Windows Update روی سرور است تا وصله‌ی CVE-2018-0886 روی هر دو طرف نصب شود. دور زدن آن با رجیستری اتصال را ناامن می‌کند و مایکروسافت نسبت به آن هشدار داده است.

عوض کردن پورت RDP امنیت می‌آورد؟

نه چندان؛ فقط اسکن ربات‌ها و شلوغی لاگ را کم می‌کند. امنیت جدی از محدود کردن پورت به آی‌پی خودت، روشن بودن NLA، رمز قوی و قفل حساب می‌آید و CISA هم توصیه می‌کند RDP پشت VPN باشد.

چرا بعد از ورود فقط صفحه‌ی سیاه می‌بینم؟

نشست باز شده ولی explorer.exe بالا نیامده. در همان نشست Ctrl+Alt+End را بزن، Task Manager را باز کن و از File گزینه‌ی Run new task، explorer.exe را اجرا کن.

سفارش سرور مجازی بازگشت به وبلاگ →