برای اتصال به سرور مجازی ویندوز، ریموت دسکتاپ (RDP) را باز کنید، آیپی سرور را بدهید و با نام کاربری Administrator — نه root — و رمزی که پنل نشان میدهد وارد شوید. روی ویندوز این کار با برنامهی داخلی Remote Desktop Connection انجام میشود و روی مک، آیفون و اندروید با برنامهی Windows App، که نام تازهی Remote Desktop مایکروسافت است. این راهنما هر سه مسیر را قدمبهقدم میگوید، نشان میدهد اگر RDP جواب نداد چطور از کنسول تحت وب و فقط با پیست کردن دو دستور فعالش کنید، خطاهای رایج مثل 0x204 و 0x104 را معنی میکند و با دادهی شبکهی خودمان نشان میدهد چرا پورت ۳۳۸۹ را باید از روز اول جدی گرفت: در ۴۸ ساعت، دستکم ۲۴ آیپی بیرونی این پورت را روی ۵۰ آیپی مختلف شبکهی ما آزمودند.
پیش از اتصال به سرور ویندوز: آیپی، نام کاربری و رمز
سه چیز لازم دارید که همه در صفحهی سرور در پنل هستند:
- آیپی سرور: در کارت آیپی، بالای صفحهی سرور.
- نام کاربری: روی ویندوز سرور، Administrator. سامانهی ساخت سرور رمز را روی همین حساب مینشاند؛ نام root فقط برای سرورهای لینوکسی است و ویندوز آن را نمیشناسد.
- رمز عبور: در جدول دسترسی همان صفحه، با دکمهی «نمایش» و «کپی». اگر رمز را عوض کرده و فراموش کردهاید، از بخش «تغییر / ریست رمز روت» یک رمز تازه بگیرید و اگر رمز تازه کار نکرد، سرور را یک بار از پنل ریاستارت کنید.
ویندوز سرور ۲۰۲۲ در فهرست سیستمعاملهای صفحهی ساخت سرور هست و دستکم ۲ گیگابایت رم و ۳۲ گیگابایت دیسک میخواهد؛ سازندهی سرور ترکیب کوچکتر را برایش نمیپذیرد. اولین روشنشدن ویندوز از لینوکس طولانیتر است؛ اگر درست پس از تحویل وصل نشد، چند دقیقه صبر کنید و از تب «کنسول» ببینید ویندوز به صفحهی ورود رسیده است یا نه.
اتصال از ویندوز با Remote Desktop Connection
- کلیدهای Win + R را بزنید، mstsc را بنویسید و Enter بزنید.
- در کادر Computer آیپی سرور را بنویسید. اگر پورت RDP را عوض کردهاید، پورت را بعد از دونقطه بیاورید: 203.0.113.10:53389.
- روی Show Options بزنید و در User name بنویسید Administrator.
- Connect را بزنید، رمز را وارد کنید و هشدار «The identity of the remote computer cannot be verified» را با Yes بپذیرید. این هشدار طبیعی است، چون سرور گواهی خودامضا دارد؛ اگر روزی بدون هیچ تغییری روی سرور دوباره ظاهر شد، جدیاش بگیرید.
دو تنظیم در همان پنجره کار روزانه را راحت میکند. در زبانهی Local Resources، گزینهی Clipboard کپیوپیست متن و فایل را بین دو طرف باز میکند، و با زدن More و تیک یک درایو، آن درایو داخل سرور دیده میشود — سادهترین راه انتقال فایل. با Save As در زبانهی General هم همهی این تنظیمات در یک فایل .rdp ذخیره میشود که دفعهی بعد فقط دوبار کلیکش میکنید.
اتصال از مک، آیفون و اندروید با Windows App
مایکروسافت برنامهی Remote Desktop را روی مک، iOS و اندروید با نام Windows App عوض کرده است؛ اگر دنبال «RD Client» یا «Microsoft Remote Desktop» میگردید، همین برنامه را نصب کنید. مسیر در هر سه یکی است:
- در Windows App دکمهی + و سپس Add PC را بزنید.
- در PC name آیپی سرور را بنویسید (با :پورت اگر عوضش کردهاید).
- در User account حساب تازه بسازید: نام کاربری Administrator و رمز پنل.
- ذخیره کنید، روی کارت سرور بزنید و هشدار گواهی را با Continue بپذیرید.
روی گوشی، صفحهی ویندوز مثل یک لمسپد کار میکند و صفحهکلید برنامه کلیدهایی مثل Ctrl و Windows را هم دارد. کنسول تحت وب پنل برای روز مبادا ساخته شده و با لمس گوشی راحت نیست؛ برای کار روزمره از موبایل، Windows App را به کار ببرید.
ریموت دسکتاپ وصل نمیشود؟ فعالکردن RDP از کنسول تحت وب
اگر ریموت دسکتاپ پیغام «can't connect» داد، اول ببینید پورت باز است یا نه. روی کامپیوتر ویندوزی خودتان در PowerShell:
Test-NetConnection 203.0.113.10 -Port 3389
# TcpTestSucceeded : True -> RDP is listening; the problem is the login
# TcpTestSucceeded : False -> RDP is off, the firewall blocks it, or the server is down
اگر False بود و سرور در پنل روشن است، از کنسول تحت وب وارد شوید؛ کنسول به صفحهنمایش خود سرور وصل است و به RDP و حتی شبکهی سرور نیاز ندارد:
- در صفحهی سرور، تب «کنسول» و دکمهی «باز کردن کنسول» را بزنید.
- برای رسیدن به صفحهی ورود ویندوز، دکمهی Ctrl+Alt+Del بالای کنسول را بزنید.
- رمز را با دکمهی «📋 پیست متن» بفرستید، نه با تایپ؛ اگر زبان صفحهکلید روی فارسی باشد، تایپ رمز اشتباه میرسد.
- پس از ورود، PowerShell را با دسترسی مدیر باز کنید و این دو خط را پیست کنید:
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name 'fDenyTSConnections' -Value 0
Enable-NetFirewallRule -Name 'RemoteDesktop-UserMode-In-TCP','RemoteDesktop-UserMode-In-UDP'
# check: something must be listening on 3389
Get-NetTCPConnection -LocalPort 3389 -State Listen
خط اول ریموت دسکتاپ را روشن میکند و خط دوم دو قاعدهی آمادهی فایروال ویندوز برای RDP را فعال میکند. نام این قاعدهها به زبان ویندوز بستگی ندارد، برخلاف نام گروه «Remote Desktop» که در ویندوز غیرانگلیسی فرق میکند. اگر Test-NetConnection بعد از این هم False بود و سرور به ping هم جواب نمیداد، مشکل از شبکهی خود سرور است؛ با آیپی و خروجی همین دستور تیکت بزنید.
خطاهای رایج ریموت دسکتاپ و راهحل هرکدام
| پیام یا کد | معنی | کار درست |
|---|---|---|
| 0x204 یا «Remote Desktop can't connect to the remote computer» | به پورت RDP نرسیدید: RDP خاموش است، فایروال بسته است، پورت را عوض کردهاید یا سرور خاموش است | Test-NetConnection بگیرید و از کنسول RDP را فعال کنید |
| 0x104، «the PC can't be found» | نشانی پیدا نشد یا اصلاً جواب نمیدهد | آیپی را دوباره از پنل کپی کنید؛ اگر درست است، وضعیت سرور را در کنسول ببینید |
| «Your credentials did not work» | نام کاربری یا رمز اشتباه است | نام کاربری Administrator باشد، Caps Lock و زبان صفحهکلید را چک کنید، رمز را از پنل کپی کنید |
| «An authentication error has occurred… CredSSP encryption oracle remediation» | یکی از دو طرف بهروزرسانی امنیتی دیگری را ندارد | ویندوز سرور را از کنسول و ویندوز خودتان را بهروز کنید |
| «The number of connections to this computer is limited» | ویندوز سرور بدون مجوز خدمات ریموت دسکتاپ فقط دو نشست مدیریتی همزمان میپذیرد | نشستهای قدیمی را ببندید (بخش زیر) |
| اتصال برقرار است اما کند و پرپرش | کمبود رم یا کیفیت مسیر شبکه | رم را بیشتر کنید، در mstsc در زبانهی Experience کیفیت را پایین بیاورید و قاعدهی UDP را باز نگه دارید |
برای پیدا کردن و بستن نشستهای جامانده، از کنسول یا همان نشستی که باز است در PowerShell بزنید:
query session # lists sessions with their ID
logoff 2 # closes session ID 2
نقش «Remote Desktop Session Host» را هم بیدلیل نصب نکنید؛ این نقش برای چند کاربر همزمان است و بدون سرور مجوز، بعد از دورهی آزمایشی اتصالها را میبندد.
امنیت ریموت دسکتاپ: پورت ۳۳۸۹ را چند ساعته پیدا میکنند
سامانهی پایش شبکهی مهران هاست جریانهای ورودی را به تفکیک پورت ثبت میکند. در ۴۸ ساعت، از ۲۳ تا ۲۵ مهر ۱۴۰۵، دستکم ۲۴ آیپی بیرونی بیش از ۸ هزار جریان اتصال به پورت ۳۳۸۹ را روی ۵۰ آیپی مختلف شبکهی ما فرستادند، که بیشترشان اصلاً ویندوز نداشتند؛ حدود چهارپنجم این جریانها از آیپیهای دیتاسنتری در آمریکا آمده بود. این عدد کف ماجراست، چون سامانه فقط پرترافیکترین جریانها را نگه میدارد. یعنی رباتها کل بازههای آیپی را برای ریموت دسکتاپ میگردند و سرور تازهی شما هم در همین فهرست است. پنج کار ساده بیشتر این حملهها را بیاثر میکند:
- رمز طولانی: رمزی که پنل ساخته را نگه دارید یا با یک عبارت طولانی عوضش کنید؛ رمزهای کوتاه و تکراری اولین چیزیاند که امتحان میشوند.
- NLA روشن بماند: احراز هویت سطح شبکه پیشفرض ویندوز سرور است و پیش از ساختن نشست، رمز را میخواهد؛ خاموشش نکنید.
- بهروزرسانی: آسیبپذیریهای جدی RDP در گذشته بدون رمز هم قابل سوءاستفاده بودهاند؛ Windows Update را روشن نگه دارید.
- محدود کردن مبدأ: اگر از آیپی ثابتی وصل میشوید، قاعدهی فایروال RDP را فقط برای همان آیپی باز کنید: Set-NetFirewallRule -Name RemoteDesktop-UserMode-In-TCP -RemoteAddress 198.51.100.7. اینترنت خانگی و موبایل در ایران معمولاً آیپی ثابت ندارد، پس این گزینه بیشتر برای اتصال از یک سرور یا دفتر با آیپی ثابت است.
- تغییر پورت: جلوی هدفگیریها را نمیگیرد، اما سیل اسکن خودکار روی ۳۳۸۹ را از لاگها بیرون میبرد.
تغییر پورت را از کنسول انجام دهید، یا دستکم بدانید نشست RDP فعلیتان با ریاستارت سرویس قطع میشود و اگر قاعدهی فایروال اشتباه باشد، فقط کنسول راه برگشت است:
$p = 53389
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name 'PortNumber' -Value $p
New-NetFirewallRule -DisplayName "RDP TCP $p" -Direction Inbound -Protocol TCP -LocalPort $p -Action Allow
New-NetFirewallRule -DisplayName "RDP UDP $p" -Direction Inbound -Protocol UDP -LocalPort $p -Action Allow
Restart-Service -Name TermService -Force
بعد از آن با 203.0.113.10:53389 وصل شوید. تلاشهای ناموفق ورود هم در لاگ امنیتی ویندوز با شناسهی رویداد ۴۶۲۵ ثبت میشوند و این دستور آخرینشان را نشان میدهد: Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625} -MaxEvents 20. همین منطق برای سرورهای لینوکسی هم صادق است؛ نسخهی SSH آن در چکلیست امنیت سرور لینوکس آمده است.
سرور مجازی ویندوز چه مشخصاتی لازم دارد؟
| کاربرد | رم | هسته | دیسک |
|---|---|---|---|
| حداقلی که پنل برای ویندوز میپذیرد | ۲ گیگابایت | ۱ | ۳۲ گیگابایت |
| کار روزمره با مرورگر و یک یا دو برنامه | ۴ گیگابایت | ۲ | ۴۰ گیگابایت |
| چند برنامهی سنگین همزمان، مثل چند ترمینال معاملاتی | ۶ تا ۸ گیگابایت | ۲ تا ۴ | ۶۰ گیگابایت به بالا |
ویندوز خودش بخش بزرگی از رم ۲ گیگابایتی را مصرف میکند و روی آن، یک مرورگر با چند زبانه سرور را کند میکند. کوچک شروع کنید: افزایش منابع از صفحهی سرور و بدون نصب مجدد انجام میشود؛ اگر پس از بزرگکردن دیسک، درایو C بزرگتر نشد، در Disk Management روی آن Extend Volume بزنید. صورتحساب سرور ابری ساعتی است؛ یک سرور ویندوز بسازید، اتصال را از کامپیوتر و گوشیتان امتحان کنید و اگر لازمش نداشتید حذفش کنید. برای کارهای معاملاتی، راهنمای سرور مجازی ترید و راهنمای سرور سرخطی بورس را هم ببینید، و اگر با سرور لینوکسی کار میکنید، مسیر معادل این راهنما اتصال به سرور با SSH است.
سؤالات پرتکرار
نام کاربری سرور مجازی ویندوز چیست؟
روی ویندوز سرور نام کاربری Administrator است، نه root. سامانهی ساخت سرور رمزی را که در پنل میبینید روی حساب Administrator مینشاند و نام root فقط برای سرورهای لینوکسی است. در ریموت دسکتاپ ویندوز این نام را در Show Options و در Windows App در بخش User account وارد کنید. اگر رمز کار نکرد، آن را از پنل کپی کنید، زبان صفحهکلید و Caps Lock را چک کنید و در صورت نیاز رمز تازه بگیرید.
چطور با گوشی به سرور مجازی ویندوز وصل شوم؟
برنامهی Windows App مایکروسافت را نصب کنید؛ این همان برنامهای است که قبلاً Remote Desktop یا RD Client نام داشت. در برنامه با Add PC آیپی سرور را بدهید، نام کاربری Administrator و رمز پنل را در User account ثبت کنید و هشدار گواهی را بپذیرید. کنسول تحت وب پنل برای ورود اضطراری ساخته شده و با لمس گوشی راحت نیست، پس برای کار روزمره از Windows App استفاده کنید.
خطای 0x204 در ریموت دسکتاپ یعنی چه؟
یعنی برنامه به پورت ریموت دسکتاپ سرور نرسیده است: یا RDP روی سرور خاموش است، یا فایروال ویندوز آن را بسته، یا پورت را عوض کردهاید و بدون پورت وصل میشوید، یا خود سرور خاموش است. با دستور Test-NetConnection و پورت ۳۳۸۹ باز بودن پورت را بسنجید. اگر بسته بود، از کنسول تحت وب پنل وارد شوید و با دو دستور PowerShell، RDP و قاعدهی فایروالش را فعال کنید.
پورت ریموت دسکتاپ را چطور عوض کنم؟
مقدار PortNumber را در رجیستری زیر کلید RDP-Tcp با Set-ItemProperty عوض کنید، برای پورت تازه با New-NetFirewallRule دو قاعدهی TCP و UDP بسازید و سرویس TermService را ریاستارت کنید. این کار را از کنسول تحت وب انجام دهید، چون نشست RDP فعلی با ریاستارت سرویس قطع میشود. بعد از آن با آیپی و پورت تازه، به شکل IP:port، وصل شوید. تغییر پورت اسکنهای خودکار را کم میکند اما جای رمز قوی را نمیگیرد.
چرا ریموت دسکتاپ میگوید تعداد اتصالها محدود است؟
ویندوز سرور بدون مجوز خدمات ریموت دسکتاپ فقط دو نشست مدیریتی همزمان میپذیرد و نشستهایی که بدون Sign out بسته شدهاند جایشان را نگه میدارند. با دستور query session فهرست نشستها را ببینید و با logoff و شمارهی نشست، نشستهای جامانده را ببندید. برای جلوگیری، بهجای بستن پنجره از منوی Start گزینهی Sign out را بزنید.