پروتکل SSH یا Secure Shell یک سازوکار برای برقراری ارتباط امن بین کاربر (Client) و سرور (Server) میباشد که از طریق فرامین متنی امکان ارتباط با کامپیوترهای لینوکسی را برای ما فراهم میکند، در حقیقت میتوان این پروتکل را نمونهای امن برای Telnet تلقی کرد (این پروتکل را با SSL اشتباه نگیرید، SSL چیست؟) برای اینکه بدانیم این پروتکل چگونه کار میکند و چه نقشی در شبکههای کامپیوتری دارد تا انتهای این مقاله با همیار آیتی همراه باشید.
همانگونه که در ابتدای مقاله ذکر کردیم، میتوان SSH را به نوعی یک نسخهی ایمن از Telnet به حساب آورد، پس بد نیست قبل از اینکه به سراغ این پروتکل پرکاربرد برویم، اندکی راجعبه Telnet بدانیم.
پروتکل Telnet چیست و چگونه کار میکند؟
تکنولوژی Telnet یا Teletype Network یکی از راههای کنترل یک رایانه از راه دور میباشد که از طریق محیط Command Prompt یا به اختصار CMD امکان برقراری ارتباط میان ۲ کامپیوتر را فراهم میکند، این پروتکل روی پورت ۲۳ فعال است، اما یک نقطه ضعف بزرگ دارد و آن چیزی نیست جز عدم رمزنگاری اطلاعات ارسالی و دریافتی و این بدان معناست که دادههای رد و بدل شده روی شبکه میتواند به راحتی توسط افراد غیر مجاز شنود شده و مورد سوءاستفاده قرار بگیرد.
از این رو افرادی به این فکر افتادند تا به گونهای این مشکل نسبتا بزرگ و اساسی تلنت را برطرف کنند و نتیجهی آن چیزی نبود جز ابداع پروتکل SSH یا Secure Shell به معنای پوستهی امن، ابداع این پروتکل نیز داستان جالبی دارد که در ادامه مختصرا آنرا شرح خواهیم داد.
فناوری SSH چگونه ابداع شد؟
داستان به وجود آمدن این تکنولوژی به سال ۱۹۹۵ بر میگردد، زمانی که Tatu Ylonen با شنود اطلاعات در ارتباطات Telnet مواجه شد و تصمیم گرفت راهکاری برای حل این مشکل پیدا کند، سپس اقدام به طراحی یک لایهی امن و کدگذاری شده برای Telnet کرد و حاصل تلاشهای او چیزی نبود جز اختراع SSH یا پوستهی امن!
سپس برای دریافت یک شمارهی پورت برای این تکنولوژی یک نامه با مضمون زیر برای IANA (سازمانی برای تخصیص شمارههای موجود در ایترنت) ارسال کرد:
سرور گرامی،
من برنامهای برای ورود امن از یک دستگاه به دستگاه دیگر نوشتهام که دیوایس را از ناامنی شبکه حفظ میکند، این برنامه نسبت به پروتکلهای موجود مانند Telnet و rLogin از امنیت و کارایی بیشتری برخوردار است و به طور خاص از شنود شدن آیپی، دیاناس و… توسط افراد سودجو جلوگیری میکند. من تصمیم دارم تا این پروتکل را به صورت رایگان در اینترنت منتشر نموده و به این ترتیب امکان استفادهی گسترده از آن را فراهم نمایم، از این رو خواهان تخصیص یک شماره پورت خاص و ویژه به این پروتکل هستم. از آنجا که این شماره باید در فیلد WKS در Name Server استفاده شود، میبایست عددی بین ۱ تا ۲۵۵ باشد.
پیشنویس RFC این پروتکل در ذیل این درخواست آمده است، نرمافزار مذکور پیش از این چندین ماه به صورت لوکال مورد استفاده قرار داشته و اکنون به جز شمارهی پورت، همه چیز برای انتشار آن آماده است، اگر تمهیداتی اندیشیده شود تا اختصاص شمارهی پورت در کمترین زمان صورت گیرد، انتشار نرمافزار در هفتهی جاری امکانپذیر خواهد شد، من در حال حاضر از پورت شمارهی ۲۲ در تست نسخهی بتای این نرمافزار استفاده نمودهام و بسیار خرسند خواهم شد اگر همین شماره برای من در نظر گرفته شود (لازم به ذکر است که این شماره هنوز به چیزی اختصاص داده نشده است)
نام سرویس این نرمافزار SSH (مخفف Secure Shell) است.
ارادتمند شما، تاتو یلونن
سپس در نهایت ناباوری، فردای آن روز نامهای را با مضمون زیر از IANA دریافت کرد:
تاتو،
همانطور که خواسته بودید، پورت شمارهی ۲۲ را به شما اختصاص دادیم.
جویس
و در نهایت به همین راحتی پورت شمارهی ۲۲ را برای این پروتکل دریافت کرد!
پروتکل SSH دقیقا چیست و چگونه کار میکند؟
تکنولوژی SSH نسخهی امن Telnet است که تحت استاندارد IEFT یا Internet Engineering Task Force روی پورت شمارهی ۲۲ فعالیت میکند، این پروتکل در حال حاظر در دو نسخهی SSH-1 و SSH-2 در اکثر سیستمعاملها در دسترس است، این پروتکل یک ساختار (Client/Server) دارد، بدین معنا که برای اجرا باید هم روی سرور و هم روی رایانهی کاربر نصب شده باشد، این فناوری در حقیقت از ۳ مجموعه ابزار به شرح زیر تشکیل شده است که عبارتند از:
- SLOGIN یا Secure Login: به معنای ورود امن به سیستمهای مبتنی بر یونیکس.
- SSH یا Secure Shell: به معنای پوستهی امن برای رد و بدل کردن دستورات.
- SCP یا Secure Copy: به معنای کپی و رونوشت کردن امن اطلاعات.
رمزنگاری اطلاعات در SSH به چه معناست؟
در حقیقت این پروتکل اطلاعات رد و بدل شده میان رایانهی مبدا و مقصد را با الگوریتم RSA Public Key کد گذاری میکند، به طور خلاصه با استفاده از این الگوریتم، اطلاعات تنها با داشتن کلید تبادلی معتبر خواهند بود و در غیر اینصورت یه هیچوجه قابل خواندن و کدگشایی نیستند و از آنجایی که این کلید تنها در اختیار رایانههای مبدا و مقصد است امنیت اطلاعات در بین مسیر حفظ خواهد شد.
پروتکل SSH چه قابلیتهایی دارد؟
این تکنولوژی چندین قابلیت مختلف و کاربردی جهت حفظ امنیت اطلاعات در اختیار استفاده کنندگان قرار میدهد که عبارتند از:
- امکان تایید کاربران
- ایجاد تونل امن در بستر TCP/IP
- انتقال خودکار اتصالات برقرار شده
- امکان تایید خارجی کاربران
- انتقال فایل امن و محافظت شده
برخی از اصطلاحات رایج در SSH:
حال که کمی با مفهوم و نحوهی عملکرد SSH آشا شدیم، بد نیست با چند اصطلاح رایج در این زمینه آشنا شویم:
- SSH: نشاندهندهی پروتکل SSH (با حروف بزرگ)
- ssh: نشان دهندهی نرمافزار سمت کاربر ssh (با حروف کوچک)
- SSHD: نشاندهندهی Daemon این سرویس در لینوکس.
- SSH1: اشاره به نسخهی اولیهی این پروتکل دارد.
- SSH2: نسخهی تجاری و غیر رایگان این پروتکل.
- OPEN SSH: نسخهی متن باز یا Open Source این پروتکل.
چگونه میتوانیم به SSH در یک سرور متصل شویم؟
در سیستمعامل ویندوز نمیتوانید به طور مستقیم به SSH متصل شوید، برای اتصال به این پروتکل به یک برنامهی واسط به نام PuTTY احتیاج خواهید داشت (این برنامه اپنسورس است و میتوانید به رایگان آن را دانلود کنید) پس از دانلود و نصب این نرمافزار با وارد کردن آدرس IP و پورت SSH (که به صورت پیشفرض پورت شمارهی ۲۲ است) میتوانید به این پروتکل در سرور متصل شوید.
در سیستمعاملهای لینوکس و مک میتوانید به راحتی و بدون نیاز به نرمافزار جانبی، تنها از طریق محیط ترمینال به SSH در یک سرور متصل شوید، برای این منظور کافیست Terminal را باز کرده و دستورات زیر را در آن وارد کنید:
ssh root@serverip –p port
در دستور بالا میتوانید بهجای root نامکاربری خود در سرور و به جای serverip و port نیز به ترتیب آدرس سرور و شمارهی پورت SSH را وارد کنید.
در محیط اندروید نیز با استفاده از نرمافزاری به نام ConnectBot میتوانید به پروتکل SSH در یک سرور از راه دور متصل شوید.