یکی از مهمترین نیازهایی که اینترنت وسرویس اینترنتی به خاطر آن خلق شد، اتصال کامپیوترها به یکدیگر از راه دور بود. اگرچه کاربرد اینترنت امروزه بسیار گستردهتر شده است، اما ریموت کردن کامپیوترها همچنان یکی مهمترین امور کارمپیوترهای تحت شبکه است. در گذشته اتصال کامپیوترها با پروتکلهای بسیار سادهای مانند Telnet انجام میشد. اما حضور هکرها و نیاز به اتصال امن باعث شد تا پروتکلهای جدیدی مانند SSH برای اتصال و ریموت کردن کامپیوترها طراحی و اجرا شود. در این مقاله قصد داریم تا انواع پروتکلهای اتصال کامپیوترها از راه دور را مورد بررسی قرار دهیم و در مورد پروتکل امن SSH آشنایی بیشتری پیدا کنیم.
پروتکل اتصال چیست؟
پروتکل اتصال به معنی شیوه ارسال و دریافت اطلاعات بین دو کامپیوتر در شبکه است. به صورت عادی دو کامپیوتر بدون دستکاری اطلاعات میتوانند با پروتکل TelNet به هم متصل شوند، اما این اتصال از طریق سرویس اینترنتی (service on Internet) اصلاً امن نیست و تنها مناسب شبکههای محلی به صورت موقت است. اگر در یک شرکت بزرگ کار میکنید، قطعاً ممکن است شبکههای شما هدف هکرها و یا رقبای احتمالی قرار گیرند. بنابراین بهتر است از همان ابتدا از یک پروتکل امن مانند SSH استفاده کنید.
TelNet اولین پروتکل ارتباط بین کامپیوترها
پروتکل تلنت (Network protocol for bidirectional communication using a virtual terminal connection) که شبکه راه دور نیز نامیده میشود، در سال 1969 برای ارتباط و ریموت کردن یک کامپیوتر از راه دور به وسیله خط فرمان درون شبکه ابداع شد. اما از آنجا که این پروتکل اطلاعات را به صورت خیلی واضح و بدون هیچ لایه امنیتی ارسال میکند، امکان این که هکرها بتوانند بین راه اتصال این پروتکل قرار بگیرند و از این روش اطلاعات مهم را سرقت کنند بسیار زیاد است و از این پروتکل، دیگر در شبکههای بزرگ مانند اینترنت استفاده نمیشود. امروزه از این پروتکل فقط در شرایط خاص و در شبکههای محلی استفاده میشود و جای آن را پروتکلهای امنتر و جدیدتر مانند SSH گرفتهاند.
Telnet چیست و چگونه کار می کند؟
Secure Shell یا SSH چیست؟
SSH که پروتکل پوسته امن نیز نامیده می شود در واقع یک پروتکل امن برای ارتباط از راه دور با کامپیوتر است که در سال 1995 توسط یک مهندس کامپیوتر به نام Tatu Ylonen در دانشگاه فناوری هلسینکی در کشور فنلاند توسعه یافت تا از حملات هکرها به شبکه دانشگاه جلوگیری کند. اس اس اچ (cryptographic network protocol for secure data communication, remote shell services or command execution and other secure network services between two networked computers) تحت استاندارد IEFT یا Internet Engineering Task Force و روی پورت شماره 22 کار میکند.SSH همچنین به مجموعه ابزارهایی اشاره دارد که پروتکل SSH را پیادهسازی میکنند. IEFT سازمانی است که از سال 1986 بر پروتکل های کامپیوتری نظارت دارد و آنها را سازماندهی میکنند. اگر برای شما نیز سوال است که اچ اس ای مخفف چیست ؟ SSH مخفف Secure Shell یا Secure Socket Shell - به معنای پوسته امن است.
تاریخچه و نسخههای SSH
اولین نسخه از SSH در سال 1995 توسط Tatu Ylonen طراحی شد که پس از آن شرکت امنیتی SSH Communications Security را راه اندازی کرد. پس از این که نقصهایی در نسخه اولیه پیدا شد، در سال 2006 نسخه دوم یعنی SSH-2 توسعه پیدا کرد و نسخه اول SSH-1 منسوخ شد. این دو نسخه به دلیل تفاوتهایی که در نوع کدگذاری دارند با هم سازگار نیستند. نکته قابل توجه این است که نسخه اول به صورت رایگان عرضه شد، اما نسخه دوم به صورت تجاری عرضه شد و کاربران برای استفاده و رزرو آن باید مبلغی را بپردازند.
کلید SSH چیست؟
کلید SSH در واقع همان کد امضای دیجیتال است که اتصالات و ارسال و دریافت دادهها بر اساس آن کدگذاری (Cryptography) و به اصطلاح Hash میشود تا اطلاعات با امنیت منتقل شوند. به عبارت دیگر این کلید نوعی امضای دیجیتال است که در ابتدای اتصال برای هر دو کامپیوتر به صورت خودکار تنظیم میشود تا در حین ارسال اطلاعات با این امضای دیجیتال رمزگذاری شوند و حین دریافت با همین امضای دیجیتال اطلاعات بازگشایی و استفاده شوند.
در واقع امضای دیجیتال رشته کدی است که لا به لای اطلاعات پخش میشود و کل اطلاعات را ناخوانا میکند. همین امر باعث ایجاد یک لایه امنیتی درون اطلاعات میشود. پروتکل SSH اطلاعات را با ترکیبی از الگوریتمهای RSA Public Key ، SHA-256 و SHA-512 رمزگذاری میکند. با این روش اطلاعات رمزگذاری شده با امضای RSA خارج از محدوده اتصال دو کامپیوتر به هیچ عنوان قابل خواندن نیست. بنابراین اگر حتی یک هکر حرفهای هم بتواند یک شاخه از تونل اتصال به دست آورد، نمیتواند از اطلاعات دانلود شده بدون داشتن امضای دیجیتال استفاده کند و عملاً کاری از پیش نمیبرد.
کلیدهای SSH در پوشه .ssh در پوشه ی اصلی کاربر ذخیره میشوند. از این کلیدها در احراز هویت عمومی "Public Key" سیستم استفاده میشوند. البته نوع خصوصیتر این کلیدها "User Keys" نام دارند که برای احراز هویت خود کاربر به کار میروند. کلید SSH روش جایگزین احراز هویت ناامن rhosts است. روش rhosts آسیب پذیر و ناامن بود و هکرها میتوانستند به راحتی رمزنگاری را هک کنند.
RSA Public Key چیست؟
RSA Public Key (Rivest–Shamir–Adleman) از اولین شیوههای رمزنگاری به روش کلید عمومی (Public Key Cryptography PKC) است که به صورت گسترده برای تأمین امنیت انتقال داده استفاده میشود. در این چنین سیستمهای رمزنگاری، کلید رمزگذاری عمومی است؛ به این معنی که از کلیدهایی استفاده میشود که به صورت پیش فرض برای همه دستگاهها استفاده شده است. این مدل از رمزگذاری با رمزگذاری خصوصی متفاوت است، با این حال ترکیب این رمزگذاری با الگوریتمهای دیگر میتواند اطلاعات را کاملاً حفاظت کند. امضای دیجیتال RSA در موارد مختلفی مانند رمزنگاری کدهای اپلیکیشنها و برنامههای کامیپوتری نیز کاربرد دارد.
فرق پروتکل SSH با TelNet در چیست؟
همانطور که گفتیم هر دو پروتکل برای ارتباط بین دو کامپیوتر دورن شبکه به کار میروند. در مقایسه SSH و Telnet میتوان گفت TelNet اطلاعات را بدون رمزگذاری و خیلی واضح ارسال میکند و به همین دلیل اطلاعات در فضای شبکه امنیت ندارند و ممکن است توسط هکر ها سرقت شوند. اما در پروتکل SSH اطلاعات قبل از ارسال توسط امضای دیجیتال RSA رمزگذاری میشوند و پس از دریافت با همین امضای دیجیتال اطلاعات بازگشایی میشوند.
کاربرد پروتکل SSH چه هستند؟
اساساً این پروتکل برای ارتباط امن و تأیید امنیت اتصالات کاربرد دارد. با توجه به امکاناتی که به این پورت اضافه شده است، میتوان گفت که SSH مانند یک فایروال عمل میکند و میتواند جلوی رخنههای امنیتی را بگیرد. تا کنون هیچ گزارشی مبنی بر ناامن بودن پروتکل -SSH-2 گزارش نشده و به همین دلیل با اطمینان کامل میتوان گفت که این پروتکل یکی از بهترین راههای ارتباط بین کامپیوترها است. از امکانات و کاربردهای SSH میتوان به موارد زیر اشاره کرد:
- امکان تایید کاربران
- ایجاد تونل امن در بستر TCP/IP
- انتقال خودکار اتصالات برقرار شده
- امکان تایید خارجی کاربران
- انتقال فایل امن و محافظت شده
موارد استفاده از SSH چه هستند؟
میتوان گفت SSH در بیشتر اتصالات از راه دور به کار میرود. از کاربرد های SSH میتوان به موارد زیر اشاره کرد:
- دسترسی از راه دور ایمن به سیستمها یا دستگاههای شبکه دارای SSH برای کاربران و همچنین فرآیندهای خودکار
- جلسات انتقال فایل امن و تعاملی
- دریافت و ارسال خودکار و ایمن فایل در پروتکل FTP
- صدور دستورات در دستگاهها و سیستمهای کامپیوتری راه دور در فضای امن
- بالا بردن امنیت زیر ساختهای شبکه
- ایجاد شبکههای ارتباط امن با V2ray
V2ray چیست؟
V2ray (Proxy server designed to bypass internet censorship) فناوری جدیدی است که با ترکیب فناوری VPN و پروتکلهای دیگر مانند Vmess، Vless، MTProto، Shadowsocks اطلاعات را با پروتکل SSH رمزگذاری میکند تا یک ارتباط بسیار امن و غیر قابل شناسایی ایجاد کند. البته خود پروتکلهای Vmess، Vless، MTProto، Shadowsocks از فناوریهای ارسال و دریافت دیگری مانند TCP، mKCP، WebSocket و... استفاده میکنند که ترکیب همه این موارد سبب ایجاد بستری پر سرعت و امن میشود.
Ftp یا File Transfer Protocol چیست؟
افتیپی (standard protocol for transferring files over TCP/IP networks) نوعی پروتکل در شبکه است که در واقع پروتکل ارسال و دریافت فایل از نوع Client-Server است که به صورت اختصاصی برای رموت کردن فضای ذخیره سازی در یک کامپیوتر دیگر به کار میرود. با این که FTP از رمزنگاری استفاده نمیکند، میتوانید برای تأمین امنیت دادهها از نرم افزار رایگان FileZilla استفاده کنید که از پروتکل SSH برای امنیت ارسال و دریافت فایلها استفاده میکند که البته باید بر روی سرور و کامپیوتر کلاینت نصب شود. در حال حاضر شرکتهای بزرگی همچون Google Drive، DopBox و OneDrive برای انتقال محافظت شده فایلها با SSH از FileZilla استفاده میکنند.
FTP چیست؟ آشنایی با پروتکل انتقال فایل داده و کاربردهای آن
برای استفاده از این قابلیت در FileZilla میبایست ابتدا برنامه Puttygen را دانلود کنید و با آن یک کلید RSA ایجاد کنید. سپس آن کلید را در هر دو سمت سرور و کامپیوتر کلاینت در بخش تنظیمات FileZilla تنظیم کنید.
OpenSSH چیست؟
با توجه به تجاری شدن نسخه دوم، برنامه نویسان علاقهمند به این حوزه در تیم برنامه نویسی OpenBSD تصمیم گرفتند نسخه SSH-1 را خودشان دوباره توسعه دهند و نسخه رایگان و امنتر با نام OpenSSH را ایجاد کردند. این پروتکل بر اساس SSH-1 کار میکند و شرایط انتقال اطلاعات از طریق پورتهای TCP را فراهم میکند. آخرین بروزرسانی OpenSSH در تاریخ 15 مارچ 2023 به نسخه 9.3 انجام شد.
OpenSSH و SSH-2 با این که هر دو از روی نسخه SSH-1 توسعه پیدا کردهاند، اما دو شاخه جدا از هم هستند و هر یک شیوه خاص خود را دنبال میکنند. میتوان گفت SSH-2 امنترین پروتکل اتصال بین دو کامپیوتر است و به همین دلیل تجاری بودن آن قابل درک است. اما OpenSSH را میتوان یک ابزار مکمل SSH-1 دانست که با افزودن امکانات جدید، سعی دارد یک نسخه رایگان و متن باز از SSH-2 باشد. برای دانلود OpenSSH میتوانید به وب سایت رسمی آن یعنی https://www.openssh.com مراجعه کنید.
آموزش فعال سازی OpenSSH در ویندوز 10
چرا SSH بر روی پورت 22 کار میکند؟
در فضای اینترنت شماره پورتها توسط Internet Assigned Numbers Authority یا IANA اختصاص داده میشود. این پورتها هر کدام برای یک پروتکل خاص در نظر گرفته شدهاند و هر کدام روش انتقال خاص خود را دارند. برای مثال پروتکل http برای روی پورت 80 و پروتکل https بر روی پورت 443 کار میکند. هر دوی این پروتکلها برای ارسال و دریافت اطلاعات وب سایتها در مرورگرها به کار میروند؛ با این تفاوت که http پروتکل قدیمی است که مانند TelNet بدون رمزگذاری کار میکند و https مانند SSH اطلاعات را توسط فناوری SSL رمزگذاری میکند.
وقتی آقای Tatu Ylonen پروتکل SSH را طراحی کرد، اینترنت تقریباً در مراحل اولیه فراگیر شدن بود و هنوز به شکل امروزی گسترش نیافته بود. در آن دوران پروتکل TelNet بر روی پورت 21 قرار داشت و پروتکل FTP بر روی پورت 23 کار میکرد. بنابراین آقای Ylonen تصمیم گرفت تا برای شناخته شدن پروتکل SSH آن را بر روی پورت 22 رزرو کند. در نهایت با مکاتبهای که آقای Ylonen با سازمان IANA داشت، پورت 22 به پروتکل SSH اختصاص داده شد.
سرور SSH چیست؟
سرورهای میزبان مخصوصاً سرورهای لینوکسی برای دسترسی به اطلاعات و پیکربندی از راه دور میبایست همزمان پکیج SSH را بر روی خود نصب و اجرا داشته باشند. در این حالت به این سرور، سرور SSH نیز گفته میشود. ترمینال لینوکس در این سرور به شیوه Client-Server از راه دور در دسترس و قابل کنترل خواهد بود.
SSL چیست و چگونه کار می کند؟ مزایا و انواع آن
راه اندازی سرور SSH در لینوکس
برای این که بتوانید از طریق SSH به سرور میزبان وصل شوید، میبایست بر روی آن یک سرور SSH هم نصب کنید تا کامیپوتر مشتری بتواند به ترمینال متصل شود. برای نصب و راه اندازی سرور SSH مراحل زیر را دنبال کنید:
- در مرحله اول مطمئن شوید که همه پکیجهای لینوکس بروز هستند. بروزرسانی پکیجها باعث میشود تا سیستم شما با آخرین نسخه openSSH سازگاری داشته باشد. برای بروزرسانی پکیجها دستورات زیر را به صورت جداگانه در ترمینال لینوکس اجرا کنید:
sudo apt update
sudo apt upgrade
- به صورت پیش فرض OpenSSH در مخزن بیشتر توزیعهای لینوکسی وجود دارد. مخصوصاً توزیعهایی که مخصوص سرور طراحی شدهاند؛ مانند ubuntu Server و OpenSuse. مخزن لینوکس چیزی شبیه به اپ استور در اندروید است. برای نصب آخرین نسخه از OpenSSH دستور زیر را اجرا کنید:
sudo apt install openssh-server
- پس از این که نصب OpenSSH کامل شد، باید آن را با دستورات زیر راه اندازی کنید.
sudo systemctl enable ssh
sudo systemctl start ssh
sudo systemctl status ssh
- از آنجا که OpenSSH به بخشهای حیاتی لینوکس و اینترنت به صورت همزمان دسترسی دارد، فایروال در لینوکس اجازه فعالیت به آن نمیدهد. بنابراین باید با اجرای دستورات زیر فعالیتهای SSH را تأیید کنید تا فایروال به آن اجازه اجرای کامل را بدهد:
sudo ufw allow ssh
sudo ufw enable
sudo ufw reload
تا اینجای کار سرور SSH بر روی لینوکس نصب و راه اندازی شد. برای وصل شدن به این سرور از راه دور و ریموت کردن ترمینال باید مراحل زیر را دنبال کنید:
وصل شدن به سرور با SSH
در سیستم عاملهای مکینتاش و لینوکس بدون هیچ نرم افزار جانبی میتوان از طریق ترمینال به کامپیوتر مقصد متصل شد. کافی است کد زیر را وارد کنید:
ssh root@serverip –p port
در سیستم عامل ویندوز نمیتوان به صورت مستقیم به SSH دسترسی داشت و برای این کار نیاز است تا از برنامه منبع باز و رایگان PuTTY استفاده کنید. پس از این که PuTTY را دانلود و اجرا کردید، کافی است تا آدرس IP و یا دامنه مورد نظر خود را در کادر Host Name (or IP address) وارد کنید و شماره پورت که همان 22 است را در کادر Port وارد کنید و در بخش Connection Type گزینه SSH را انتخاب کنید و در آخر بر روی دکمه Open کلیک کنید.
در صورتی که دسترسی به SSH مورد نظر نیاز به نام کاربری و کلمه عبور داشته باشد، آن را درون صفحه ترمینال وارد میکنید تا اجازه استفاده از آن را داشته باشید. بیشتر سیستم عاملها به صورت پیش فرض از هر دو نسخه SSH پشتیبانی میکنند؛ مگر این که ورژن SSH در سمت سرور تنظیم شده باشد. برای اطلاع از شماره ورژن SSH میتوانید دستور # ssh -v را در ترمینال وارد کنید.
یکی از مواردی که از ویندوز 7 به این سیستم عامل اضافه شد، خط فرمان Windows Power Shell است که یک نسخه توسعه یافته از خط فرمان CMD است. کاربردهای این خط فرمان بسیار مشابه ترمینال در لینوکس است. از این خط فرمان جدید از SSH پشتیبانی میکند و معمولاً به صورت پیشفرض بر روی ویندوز نصب است. اما قبل از استفاده از آن، میبایست از نصب بودن پکیج اجرای OpenSSH Client بر روی ویندوز مطمئن شوید. برای نصب OpenSSH در ویدوز 10 و 2019 به بالا، مراحل زیر را دنبال کنید:
ابتدا وارد بخش تنظیمات ویندوز شوید. میتوانید به کمک کلیدهای میانبر WIN + I هم تنظیمات ویندوز را باز کنید.
وارد بخش Apps شوید.
از منوی عمودی سمت چپ گزینه Apps & features را باز کنید.
بر روی Optional features کلیک کنید. اول در کادر Installed features Find عبارت OpenSSH Client را جستجو کنید. اگر در این لیست چیزی پیدا نکردید، مراحل زیر را دنبال کنید.
روی Add a feature+ کلیک کنید.
در لیستی که ظاهر میشود، در کادر Find عبارت OpenSSH Client را وارد کنید تا در لیست نمایش داده شود.
تیک کنار OpenSSH Client کلیک کنید تا پر شود.
بر روی دکمه Install کلیک کنید تا OpenSSH Client نصب شود.
در نهایت پس از اتمام نصب ویندوز را مجدد راه اندازی (Restart) کنید.
اکنون OpenSSH Client به Windows PowerShell اضافه شده و میتوانید با دستور زیر از کامپیوتر مشتری به SSH متصل شوید:
راه اندازی سرور SSH در ویندوز
در سیستم عامل ویندوز میتوانید با نصب پکیج OpenSSH سرور SSH را بر روی ویندوز فعال کنید. برای نصب و راه اندازی سرور SSH بر روی ویندوز، مراحل زیر را دنبال کنید:
ابتدا وارد بخش تنظیمات ویندوز شوید. میتوانید به کمک کلیدهای میانبر WIN + I هم تنظیمات ویندوز را باز کنید.
وارد بخش Apps شوید.
از منوی عمودی سمت چپ گزینه Apps & features را باز کنید.
بر روی Optional features کلیک کنید. اول در کادر Installed features Find عبارت OpenSSH Server را جستجو کنید. اگر در این لیست چیزی پیدا نکردید، مراحل زیر را دنبال کنید.
روی Add a feature+ کلیک کنید.
در لیستی که ظاهر میشود، در کادر Find عبارت OpenSSH Server را وارد کنید تا در لیست نمایش داده شود.
تیک کنار OpenSSH Server کلیک کنید تا پر شود.
بر روی دکمه Install کلیک کنید تا OpenSSH Server نصب شود.
در نهایت پس از اتمام نصب ویندوز را مجدد راه اندازی (Restart) کنید.
در صورتی که میخواهید OpenSSH به صورت خودکار اجرا شود، میبایست مراحل زیر را دنبال کنید:
- ابتدا برنامه Run باز کنید.
- میتوانید با کلیدهای میانبر Win+R این برنامه را باز کنید و یا از منوی استارت و در پوشه Windows System آن را پیدا کنید.
- در برنامه Run عبارت services.msc را تایپ کنید و بر روی دکمه OK کلیک کنید تا وارد تنظیمات سرویسهای ویندوز شوید. (البته میتوانید عبارت services.msc را حین باز بودن منوی Start هم تایپ کنید تا وارد منوی Search شوید و گزینه آن برای شما نمایان شود.)
- در این صفحه از میان آیتمها گزینه OpenSSH SSH Server را پیدا و روی آن دابل کلیک کنید.
- در پنجره OpenSSH SSH Server Properties و در زبانه General منوی Startup type را بر روی Automatic تنظیم کنید.
- در آخر دکمه OK را کلیک کنید و پنجره Services را هم ببندید.
کانفیگ SSH در ویندوز
پس از این که OpenSSH را بر روی ویندوز نصب کردید، نوبت به کانفیگ کردن آن میرسد. ابتدا باید Windows PowerShell به OpenSSH معرفی کنید تا زمانی که کاربر مشتری به کامپیوتر وصل میشود، بتواند با Windows PowerShell مانند Terminal در لینوکس کار کند. برای این کار ابتدا باید Windows PowerShell را در حالت Administrator باز کنید و سپس دستور زیر را درون آن اجرا کنید:
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force
با این کار در رجیستری ویندوز این یک پارامتر برای OpenSSH افزوده میشود که حاوی آدرس Windows PowerShel است.
نکته مهم: در صورتی که SSH در سیستم عامل ویندوز همچنان غیرفعال بود، اجازه دسترسی آن را در Firewall بررسی کنید.
برای این کار از مسیر زیر وارد تنظیمات دسترسی برنامه شوید:
Control Panel - Windows Defender Firewall - Allow an app or feature through Windows Defender Firewall
در صورت غیر فعال بودن لیست، بر روی دکمه Change Settings کلیک کنید. گزینه OpenSSH Server را در لیست پیدا کنید و تیک هر دو گزینه Private و Public را برای آن پُر کنید و در آخر بر روی دکمه OK کلیک کنید.
همچنین میتوانید عبارت Firewall را حین باز بودن منوی Start تایپ کنید تا برنامه تنظیمات Firewall نمایان شود.
یا این که در بخش تنظیمات ویندوز گزینه آخر یعنی Update & Security را باز کنید و در صفحهای که باز میشود، گزینه Firewall & network protection را کلیک کنید.
در نهایت در این صفحه بر روی گزینه Allow an app through firewall کلیک کنید تا به لیست برنامههای Firewall برسید.
سخن پایانی
همانطور که مطالعه کردید، با سرویس SSH میتوانید یک راه امن برای ارسال و دریافت اطلاعات داشته باشید که SSH در شبکه و سرویس اینترنتی (technical ability afforded by the Internet) بسیار پرکاربرد است و تقریباً همه سرورهای میزبانی از این فناوری استفاده میکنند. در واقع این پروتکل یکی از نیازهای اولیه و اساسی برای امنیت سایبری در فضای اینترنت است. هر نرم افزار و یا ساختاری که به نوعی با سیستمهای از راه دور کار کند، میتواند از این پروتکل محبوب برای بالابردن امنیت خود استفاده کند و هیچ محدودیتی در نصب و اجرای آن وجود ندارد. حتی روترهای حرفهای نظیر میکروتیک هم از این فناوری در محصولات خود استفاده کردهاند.