استفاده از SSH برای استفاده ایمن از اتصال دسک تاپ از راه دور به Windows

صفحه به روز شده :
تاریخ ایجاد صفحه :

محیط عملیاتی

اتصال از راه دور به Windows
  • ویندوز 11
اتصال از راه دور از Windows
  • ویندوز 10
Openssh
  • OpenSSH_for_Windows_8.1p1، LibreSSL 3.0.2

پیش نیازها

اتصال از راه دور به Windows
  • ویندوز 10 یا بالاتر (Pro یا نسخه دیگر مورد نیاز است). با این حال، این امر در صورتی که OpenSSH بتواند به طور جداگانه اماده شود، اعمال نمی شود.
  • ویندوز سرور 2019 یا بالاتر با این حال، این امر در صورتی که OpenSSH بتواند به طور جداگانه اماده شود، اعمال نمی شود.
اتصال از راه دور از Windows
  • ویندوز (اکثر نسخه ها امکان پذیر است)
  • ویندوز سرور (اکثر نسخه های ممکن است)

در ابتدا

پس از ایجاد یک محیط ویندوز در اینترنت در ابر یا VPS، شما اغلب از یک اتصال دسکتاپ از راه دور برای کار با مقصد ویندوز از راه دور استفاده می کنید.

در اتصال دسکتاپ از راه دور، محتوای ارتباطی رمزگذاری می شود و اگر نام کاربری و رمز عبور به بیرون درز نکند، دیگران بدون اجازه وارد سیستم نمی شوند. همیشه این نگرانی وجود دارد که مردم سعی کنند از هر جایی وارد سیستم شوند.

برخی از ابرهای بزرگ دارای فایروال های جدا از ماشین های مجازی هستند و یک تابع برای محدود کردن منبع اتصال وجود دارد. این ویژگی ها ممکن است در همه سرویس ها در دسترس نباشد. به ویژه در محیط های ساخته شده با بودجه کم، موارد زیادی وجود دارد که چنین عملکردهایی در دسترس نیستند.

بنابراین، این بار، من می خواهم منبع اتصال را تا حد ممکن با اضافه کردن تابع SSH محدود کنم . از انجا که از کلید خصوصی و کلید عمومی استفاده می شود، تا زمانی که کلید خصوصی به بیرون درز نکند، امکان ورود از راه دور از محیط دیگری می تواند تا حد ممکن به حداقل برسد.

در این مورد، ما از OpenSSH برای ساخت محیط SSH استفاده خواهیم کرد.

ایجاد یک مقصد دور محیط Windows

ساخت یک محیط ویندوز است که اجازه می دهد تا شما را به اتصال از راه دور از طریق اینترنت. مهم نیست که تا زمانی که از اینترنت عبور می کند، در کجا ساخته می شود، اما برای این تایید، به عنوان یک ماشین مجازی در مایکروسافت Azure ساخته خواهد شد. مراحل ساخت در Azure مربوط به این نکته نیست، بنابراین من انها را حذف خواهم کرد. از انجا که پورت 22 این بار مورد استفاده قرار می گیرد، اگر از Azure استفاده می کنید، اطمینان حاصل کنید که ارتباطات پورت 22 از طریق تنظیمات ماشین مجازی در Azure عبور می کند.

اگر در محیطی غیر از Azure در حال ساخت و ساز هستید، اطمینان حاصل کنید که در موقعیتی هستید که می توانید یک اتصال دسکتاپ از راه دور به ویندوز برای محیط خود ایجاد کنید.

علاوه بر این، نسخه ویندوز ویندوز 10 یا بالاتر یا ویندوز سرور 2019 یا بالاتر را هدف قرار می دهد که ساخت یک محیط OpenSSH را اسان می کند. این می تواند در یک محیط قبلی اجرا شود، اما کمی زمان و تلاش بیشتری می گیرد زیرا شما باید OpenSSH را به طور جداگانه دانلود و تنظیم کنید.

در این صورت، این روش همانند SFTP است، بنابراین لطفا به نکات زیر مراجعه کنید.

راه اندازی OpenSSH

از اینجا، ما در محیط ویندوز از راه دور کار خواهیم کرد. اول، اتصال به مقصد از راه دور با اتصال دسکتاپ از راه دور. اگر ابر یا VPS شما یک کنسول را فراهم می کند، می توانید از ان استفاده کنید. از انجا که ما این بار در محیط ویندوز 11 کار می کنیم، مراحل ممکن است در نسخه های دیگر کمی متفاوت باشد.

منوی Start را باز کرده و Settings را انتخاب کنید.

یک برنامه را انتخاب کنید؛

گزینه Optional Features را انتخاب کنید.

Show Features را انتخاب کنید.

"OpenSSH Server" کمی پایین تر در لیست وجود دارد، بنابراین ان را بررسی کنید و روی "Next" کلیک کنید.

روی نصب کلیک کنید.

هنگامی که نصب کامل شد و "OpenSSH Server" به لیست زیر اضافه شد، شما انجام می شود.

پیکربندی سرویس برای OpenSSH

روی منوی Start راست کلیک کرده و Computer Management را انتخاب کنید.

خدمات را از لیست سمت چپ انتخاب کنید.

"OpenSSH SSH Server" را در لیست میانی پیدا کنید، روی ان کلیک راست کنید و "Properties" را انتخاب کنید.

هنگام اتصال از راه دور، ما می خواهیم سرور OpenSSH اجرا شود، بنابراین "نوع راه اندازی" را به "Automatic" تنظیم کنید.

از انجا که در حال حاضر اجرا نمی شود، من ان را از اینجا شروع می کنم، از جمله تنظیم ان.

پس از راه اندازی، روی دکمه OK کلیک کنید تا ان را ببندید. باید در لیست اجرا شود.

پیکربندی OpenSSH

در حالت اولیه، احراز هویت توسط کلید خصوصی غیرفعال است، بنابراین ان را تنظیم کنید. پوشه زیر را در Explorer باز کنید.

  • C:\برنامهData ssh

با این حال، پوشه بالا ممکن است یک پوشه پنهان باشد، بنابراین لطفا ان را با تنظیم گزینه های Explorer قابل مشاهده کنید.

یک فایل در sshd_config پوشه وجود دارد، بنابراین ان را با یک ویرایشگر متن مانند Notepad باز کنید. از انجا که ما این بار تغییراتی ایجاد خواهیم کرد، لطفا قبل از تغییر به عنوان پشتیبان sshd_config_old کپی و تکرار کنید.

PubkeyAuthentication yes جستجو برای: این مورد تنظیمی برای فعال کردن احراز هویت کلید مخفی است. به طور پیش فرض، ان را غیر فعال است و می گوید، اما ان را اظهار نظر، yes بنابراین ان را uncomment.

قبل از تغییر

#PubkeyAuthentication yes

بعد از تغییر

PubkeyAuthentication yes

PasswordAuthentication yes جستجو برای: این مورد تنظیمی برای فعال کردن احراز هویت گذرواژه است. این به طور پیش فرض فعال است و حتی اگر احراز هویت کلید خصوصی را فعال کنید، از نقطه نظر امنیتی بی معنی است اگر فعال باقی بماند، بنابراین ان را غیرفعال کنید و no تنظیم کنید.

قبل از تغییر

#PasswordAuthentication yes

بعد از تغییر

PasswordAuthentication no

خط زیر را نزدیک به پایان توضیح می دهد: این تنظیم کلیدی برای گروه مدیران است و ما ان را غیرفعال خواهیم کرد زیرا در این مورد از ورود به سیستم هر کاربر پشتیبانی خواهیم کرد.

قبل از تغییر

Match Group administrators
       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

بعد از تغییر

#Match Group administrators
#       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

پس از ذخیره فایل پس از OpenSSH SSH Server تغییر، سرویس را دوباره راه اندازی کنید تا تنظیمات را منعکس کنید.

اگر می خواهید پورت را تغییر دهید

اگر می خواهید پورت SSH را تغییر دهید، پورت زیر را تغییر دهید.

قبل از تغییر

#Port 22

بعد از تغییر

#Port <任意の番号>

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

اگر شماره پورت را تغییر دهید، هنگام اتصال باید پورت دیگری غیر از 22 را مشخص کنید.

ایجاد کلیدهای خصوصی و عمومی

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

اگر ویندوز 10 یا بالاتر، ویندوز سرور 2019 یا بالاتر دارید، کلاینت OpenSSH به طور پیش فرض نصب شده است، بنابراین شما به راحتی می توانید ان را با یک فرمان ایجاد کنید. در محیط های دیگر، شما باید یک کلاینت OpenSSH جداگانه نصب کنید یا از یک ابزار جداگانه استفاده کنید.

نکات زیر برای SFTP است، اما لطفا برای راه اندازی یک مشتری OpenSSH به انها مراجعه کنید.

در محیط مشتری، یک خط فرمان، PowerShell، ترمینال یا هر ابزاری که می تواند دستورات را اجرا کند، راه اندازی کنید.

از انجا که شما یک فایل ایجاد می کنید، به هر دایرکتوری با یک فرمان منتقل cd شوید.

فرمان زیر را اجرا کنید:

ssh-keygen -t rsa -f id_rsa

شما می توانید یک رمز عبور (رمز عبور) برای کلید تنظیم کنید، بنابراین لطفا در صورت لزوم ان را وارد کنید. اگر یک رمز عبور تنظیم کنید، امنیت افزایش می یابد، اما زمان و تلاش برای ورود به رمز عبور در فرایند بعدی افزایش می یابد.

یک کلید عمومی (id_rsa.pub) و یک کلید خصوصی (id_rsa) ایجاد شده است.

کلید عمومی (id_rsa.pub) بعدا در مقصد دور افتاده قرار می گیرد. کلید خصوصی را می توان در هر نقطه از مشتری از راه دور قرار داد، اما باید در یک پوشه قرار گیرد که فقط توسط حساب کاربری که برای اهداف امنیتی استفاده می شود، قابل دسترسی است. اساسا، من فکر می کنم هیچ مشکلی وجود ندارد اگر شما ان را در پوشه زیر در سمت مشتری قرار دهید. اگر از سرویس گیرنده OpenSSH استفاده می کنید، به طور پیش فرض در این پوشه مرور می شود.

  • C:\Users\<ユーザー名>\.ssh

اگر نمی توانید پوشه بالا را در Explorer ایجاد کنید، می توانید ان را با دستور زیر ایجاد کنید.

cd C:\Users\<ユーザー名>
mkdir .ssh

قرار دادن کلیدهای عمومی

این یک عملیات از راه دور است. کلید عمومی ایجاد شده (id_rsa.pub) را در مقصد دور افتاده قرار دهید. انتقال این پرونده به پوشه زیر: <ユーザー名> نام حساب کاربری است که هنگام اتصال از راه دور به ان وارد می شوید.

  • C:\Users\<ユーザー名>\.ssh

اگر پوشه ای ندارید و نمی توانید پوشه ای را در Explorer ایجاد کنید، می توانید یک پوشه با دستور زیر ایجاد کنید.

cd C:\Users\<ユーザー名>
mkdir .ssh

فایل authorized_keys کلید عمومی مستقر شده را به . همینه.

بسته به محیط شما، ممکن است قبلا authorized_keys فایل را داشته باشید. این ممکن است مورد باشد اگر شما یک اتصال SSH را برای اهداف دیگر تنظیم کرده اید. در این صورت authorized_keys ، شما فایل را با باز کردن فایل و فایل با Notepad و غیره و id_rsa.pub لیست محتویات id_rsa.pub در خط بعدی authorized_keys ثبت کرده اید. شما می توانید چندین کلید عمومی را در authorized_keys ثبت کنید.

ارتباط با SSH

هنگام اتصال با دستور OpenSSH

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

ابزار فرمان انتخابی خود را راه اندازی کنید (Command Prompt، PowerShell، Terminal).

فرمان زیر را وارد کنید:

قالب فرمان

ssh -i <秘密鍵ファイルパス> -L <ローカルの空いているポート>:127.0.0.1:3389 <接続先のユーザーアカウント名>@<接続先サーバーIPアドレス、またはホスト名>

در زیر توضیح پارامترها است. ان را با توجه به محیط خود تنظیم کنید.

پارامتر متغیر نام شرح
Ssh یک اعلامیه برای استفاده از SSH با OpenSSH.
-من یک اعلان برای استفاده از یک فایل کلید خصوصی.
مسیر فایل کلید خصوصی <> مکان فایل کلید خصوصی که ایجاد کرده اید را توصیف کنید. C:\Users\<ユーザー名>\.ssh مسیر اختیاری است. در غیر این صورت، یک مسیر مطلق یا نسبی لازم است.
-ال این اعلامیه مشخص می کند که پورت به صورت محلی و از راه دور هنگام اتصال به یک مقصد دور استفاده می شود.
< بندر ازاد محلی> اتصال دسکتاپ از راه دور معمولا از پورت 3389 استفاده می کند، اما شما می توانید با استفاده از هر پورت متصل شوید. مهم نیست چه عددی است، تا زمانی که رایگان باشد.
127.0.0.1 این ادرس IP میزبان است که تشخیص می دهد مقصد از راه دور از کجا متصل است. اساسا، 127.0.0.1 خوب است.
3389 شماره پورت که در مقصد دور استفاده می شود. مقصد دور افتاده معمولا توسط پورت 3389 با اتصال دسکتاپ از راه دور متصل می شود، بنابراین می توان ان را همانطور که هست ترک کرد.
< نام حساب کاربری که می خواهید به ان متصل شوید> مشخص کنید که کدام حساب را می خواهید در مقصد دوردست متصل کنید.
< ادرس IP یا نام میزبان سرور برای اتصال به> سرور مقصد دوردست را مشخص میکند.

ورودی مثال

ssh -i id_rsa -L 13389:127.0.0.1:3389 TestUser@52.140.221.194

اولین بار، شما برای یک کلید خواسته می شود، بنابراین yes تایپ کنید و Enter را فشار دهید.

اگر یک رمز عبور برای کلید خصوصی خود دارید، باید ان را وارد کنید.

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

هنگام ارتباط با PuTTY

در اینجا، ما سعی خواهیم کرد با ابزاری به نام PuTTY به SSH متصل شویم.

تبدیل کلید خصوصی

اول، اگر از PuTTY استفاده می کنید، باید کلید خصوصی را تبدیل کنید. من فکر می کنم "بتونه .exe" در ابزار متصل وجود دارد، بنابراین لطفا ان را شروع کنید.

"Conversions -> Import key" را از منو انتخاب کنید.

کلید خصوصی ایجاد شده را انتخاب کنید، در این مورد "id_rsa".

اگر رمز عبور تنظیم کرده اید، ان را وارد کنید.

گزینه "File -> Save private key" را از منو انتخاب کنید.

「. .ppk" file.

هنگامی که ایجاد می شود، شما انجام می شود.

پیکربندی PuTTY

پرتاب بتونه.exe.

ادرس IP محیطی که می خواهید به ان متصل شوید را وارد کنید. اگر دامنه دارید، می توانید با یک نام دامنه ارتباط برقرار کنید.

Connection -> Data را از منوی سمت چپ انتخاب کنید. در قسمت نام کاربری ورود خودکار، نام حساب محیطی را که می خواهید به ان متصل شوید وارد کنید.

از منوی سمت چپ، Connection -> SSH -> Tunnels را انتخاب کنید. هر یک از انها را در قسمت ورودی زیر وارد کنید و روی دکمه "اضافه کردن" کلیک کنید.

پارامتر نام ارزش ملاحظات
درگاه منبع 13389 هر پورت رایگان انجام خواهد داد. بعدا ازش استفاده میکنم
مقصد 127.0.0.1:3389

هنگامی که اضافه می شود، باید به این شکل باشد:

بعد، "Connection -> SSH -> Auth -> Cledentioals" را از منوی سمت چپ انتخاب کنید و روی دکمه Browse برای "فایل کلید خصوصی برای احراز هویت" کلیک کنید.

کلید خصوصی که ذخیره کرده اید را انتخاب کنید.

"جلسه" را در منوی سمت چپ انتخاب کنید، نام انتخابی خود را برای Save Sessions وارد کنید و روی دکمه Save کلیک کنید. از دفعه بعد به بعد، اشکالی ندارد که این تنظیم را بارگذاری کنید.

پس از تایید ذخیره، روی دکمه "باز کردن" کلیک کنید.

صفحه نمایش زیر هنگام اتصال برای اولین بار نمایش داده می شود. روی دکمه Accept کلیک کنید.

شما یک صفحه نمایش را مشاهده خواهید کرد که به نظر می رسد یک خط فرمان است. اگر رمز عبوری برای کلید خصوصی دارید، ان را وارد کنید.

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

ایجاد یک اتصال رومیزی از راه دور با SSH

در حال حاضر، اجازه دهید یک اتصال دسکتاپ از راه دور در حالی که با SSH متصل است.

هنگام اتصال، بخش کامپیوتر ادرس از راه دور واقعی نیست، بلکه "localhost:< > نام پورت مشخص شده در اتصال SSH" است. در مثال، 13389 مشخص شده است، بنابراین در اینجا ما به "localhost: 13389" متصل خواهیم شد.

اگر صفحه احراز هویت نمایش داده شود، می توانید قضاوت کنید که اتصال کامل است. نام کاربری و رمز عبور خود را برای اتصال وارد کنید.

اگر بتوانید اینگونه ارتباط برقرار کنید، موفق شده اید.

از کار انداختن اتصالات رومیزی از راه دور منظم در تنظیمات دیوار اتش

در زمان مورد قبلی، اکنون می توانید با استفاده از SSH با یک دسکتاپ از راه دور ارتباط برقرار کنید. با این حال، در این حالت، "اتصال دسکتاپ از راه دور توسط SSH" تنها به "اتصال دسکتاپ از راه دور عادی" اضافه شده است. از نظر امنیتی، چیزی اضافه نمی کند. بنابراین کار بعدی این است که از "اتصال دسکتاپ معمولی از راه دور" جلوگیری کنید.

اگر این تنظیم را انجام دهید، نمی توانید به جز "اتصال دسکتاپ از راه دور توسط SSH" متصل شوید، بنابراین اگر تنظیمات را خراب کنید، ممکن است وسیله ای برای اتصال از راه دور نداشته باشید. بنابراین، مطمئن شوید که از قبل بررسی کنید که "اتصال دسکتاپ از راه دور توسط SSH" امکان پذیر است و قادر به کار با محیط از راه دور با روش های دیگر حتی اگر مشتری شما در حال تلاش برای اتصال به ناپدید می شود.

در اینجا، تنظیمات فایروال را در "اتصال دسکتاپ از راه دور از طریق SSH" پیکربندی کنید. این به این دلیل است که اگر عملیات را با "اتصال دسکتاپ از راه دور عادی" انجام دهید، لحظه ای که فایروال را تنظیم می کنید، قطع می شود.

Windows Defender Firewall را با امنیت پیشرفته مشاهده کنید. بسته به نسخه ویندوز، محل نمایش متفاوت خواهد بود، بنابراین لطفا ان را با توجه به ان نسخه نمایش دهید.

قوانین ورودی را از منوی سمت چپ انتخاب کنید.

در لیست میانی، "Remote Desktop - User Mode (TCP In)" را پیدا کنید و خواص ان را باز کنید.

زبانه Scope را انتخاب کنید، ادرس IP محلی را به این ادرس های IP تغییر دهید و روی دکمه Add کلیک کنید.

127.0.0.1 را وارد کنید و روی دکمه OK کلیک کنید. این کار از اتصال از راه دور دسکتاپ از هر جایی غیر از 127.0.0.1 جلوگیری می کند. 127.0.0.1 ادرس IP است که به دستگاه شما اشاره می کند. اگر مقدار اشتباهی را وارد کنید، ممکن است نتوانید از هر جایی متصل شوید، بنابراین مراقب باشید.

برای تایید روی دکمه OK کلیک کنید.

در حال حاضر، این به تنهایی یک اقدام متقابل است، اما اجازه دهید "Remote Desktop - User Mode (UDP Receive)" را نیز تنظیم کنیم.

بررسی کنید که نمیتوانید از راه دور با چیزی غیر از SSH ارتباط برقرار کنید.

در حال حاضر، سعی کنید یک اتصال دسکتاپ از راه دور از کامپیوتر دیگری که از SSH استفاده نمی کند، ایجاد کنید.

اگر بتوانید متصل شوید، صفحه احراز هویت نمایش داده می شود. این خوب است اگر شما می توانید تایید کنید که اتصال نمی تواند به عنوان زیر نشان داده شده است.

خلاصه

با اخرین ویندوز، در حال حاضر اسان است برای معرفی یک سرور SSH. با اضافه کردن تنظیمات، اکنون می توانید به راحتی امنیت اتصال دسکتاپ از راه دور خود را افزایش دهید. با این حال، از انجا که تنها مسئول اقدامات امنیتی در خود ویندوز است، اگر می خواهید ان را امن تر کنید، فکر می کنم بهتر است قبل از اتصال به ویندوز، یک سرور SSH یا فایروال جداگانه تنظیم کنید.

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