حتما تا بهحال کلمه SSH را زیاد شنیده و یا حتی با ssh در ارتباط بوده و از آن استفاده کردهاید اما احتمالا اطلاعات دقیق و کاملی از آن نداشته یا به دنبال آن نبودهاید چرا که احتمالا شما هم همانند من به نحوه استفاده از آن و کاربردی که برای شما داشته است بسنده کرده باشید، اما اگر علاقمند هستید که در خصوص SSH که روزانه با آن در ارتباط هستید و برای یک مدیر سرور یا مدیر شبکه حکم آب برای یک موجود زنده را دارد بیشتر بدانید و با تاریخچه آن آشنا شوید، در این صورت تا انتهای این مقاله با من همراه باشید تا در کنار هم با این پروتکل حیاتی دنیای وب و شبکه بیشتر آشنا شویم .
فهرست مطلب
SSH چیست ؟
SSH که همچنین به عنوان Secure Shell یا Secure Socket نیز شناخته میشود یک پروتکل شبکه است که به کاربران و به ویژه مدیران سرور و شبکه امکان ارتباط امن با یک رایانه/سرور/دیوایس شبکه(مانند برخی روترها و…) را فراهم میکند. SSH همچنین به مجموعه از ابزارهایی اطلاق میشود که پروتکل SSH را پیادهسازی میکنند. Secure Shell امکان ارتباط با قویترین توع تایید هویت و تبادل اطلاعات به صورت رمزگذاری شده بین دو سیستم در یک شبکه باز همانند اینترنت را فراهم میکند. SSH به طور گسترده ای توسط مدیران شبکه و سرور برای مدیریت سیستمها و نرم افزارهای راه دور استفاده میشود که به آنها امکان ورود به سیستمها در شبکه، اجرای دستورات(کامندها) و امکان جابهجایی فایل بین دو سیستم را میدهد.
SSH یک رابط کامند لاین بوده و به طور پیشفرض بر روی پورت ۲۲ فعالیت میکند و در واقع جایگزین ایمنتر برای پروتکلهای فاقد اهراز هویت دیگر مانند telnet یا rlogin شده و همچنین جایگزین مناسب و ایمن برای پروتکل بدون رمزگذاری انتقال فایل مانند FTP است .
به طور خلاصه SSH یک پروتکل امن برای ارتباط و جابهجایی فایل بین یک کاربر(client) و سرور(Server) است که جایگزین پروتکلهای قدیمی تر مانند Telnet شده که به ما امکان اجرای فرامین از راه دور در سیستمهای لینوکسی و یونیکسی را میدهد.
Telnet چیست و مقایسه Telnet با SSH
پروتکل Telnet یا همان Tele Type Network یک پروتکل جهت اتصال و کنترل از راه دور یک رایانه/سرور/دیوایس است که توسط محیط Command Prompt یا همان CMD و بر روی پورت ۲۳ اجرا میشود. اما بزرگترین نقطه ضعف این پروتکل که زمینه ساز ابداع SSH شد عدم عدم رمزگذاری دادهها بین مبدا و مقصد است که در این حالت کلیه دادههای تبادل شده بین مبدا و مقصد به سادگی توسط افراد غیرمجاز قابل شنود بودند.
استفادههای متداول پروتکل SSH
پروتکل SSH به طور کلی جهت ایجاد ارتباط و تبادل داده بین کاربر و سرور استفاده میشود که میتوان به چهار استفاده مهم از آن به شکل زیر اشاره داشت:
- ارائه دسترسی امن به کاربران و انجام عملیاتهای خودکار
- انتقال تعاملی و خودکار فایلها
- اجرای دستورات از راه دور
- مدیریت زیرساختهای شبکه و سایر اجزای حیاتی سیستم
پروتکل SSH چگونه کار میکند
پروتکل SSH در مدل کاربر-سرور(client-server) کار میکند، به این معنا که یک کاربر ssh به یک سرور SSH متصل میشود. زمانی که کاربر ssh پروسه درخواست اتصال را آغاز میکند از یک کلید رمزگذاری شده عمومی برای تأیید هویت سرور SSH استفاده میکند. پس از مرحله تایید هویت، یک تونل جهت تبادل اطلاعات بین کاربر و سرور SSH با استفاده از الگوریتمهای متداول رمزنگاری و الگوریتم متقارن برای اطمینان از حریم خصوصی و یکپارچگی دادهها ایجاد شده و ارتباط با سیستم عامل برقرار میشود.

نحو عملکرد پروتکل SSH
احراز هویت بسیار قویتر با استفاده از SSH keys
برای احراز هویت از طریق پروتکل SSH روشهای متعددی وجود دارد که رایجترین آنها دو روش استفاده از نام کاربری/رمز عبور و روش احراز هویت با کلید عمومی(public key authentication) است.
روش اول که خارج از موضوع این بخش از مقاله است روش ساده و معمول احراز هویت است که در آن شما با استفاده از نام کاربری و رمز عبور به سیستم عامل وارد خواهید شد اما روش دوم روشی کاربردیتر و ایمنتر از روش قبل میباشد که جهت ورود خودکار یا Single-Sign on توسط مدیران سیستم و کاربران استفاده میشود. ایده این روش به این شکل است که یک جفت کلید عمومی و خصوصی ایجاد شده و کلید عمومی در سرور قرار گرفته و یک کپی از کلید خصوصی در اختیار کاربر و اشخاصی که قصد ورود به سیستم را دارند ارائه میشود. کلیدهای خصوصیای که برای احراز هویت استفاده میشوند SSH Keys نیز نامیده میشوند. احراز هویت با کلید خصوصی روشی است که دولت ایالات متحده نیز برای احراز هویت در بسیاری از کارتهای هوشمند مانند CAC و PIV نیز مورد استفاده قرار داده است. برای مشاهده آموزش روش فعالسازی SSH Keys به این مقاله مراجعه نمایید.
کاربرد اصلی روش SSH Keys علاوه بر امنیت بالاتر، در سیستمهای اوتوماسیون است که برای ورود خودکار به سیستم و انجام عملیات توسط نرم افزارها و اسکریپتها، انتقال خودکار فایل و یکپارچهسازی سیستمهای مدیریت مورد استفاده قرار میگیرد.
رمزگذاری اطلاعات در ssh
از ابتدای این مقاله تاکنون در خصوص رمزگذاری اطلاعات تبادل شده در SSH صحبت شده است اما رمزگذاری اطلاعات تبادلی چیست؟ در حقیقت پروتکل SSH اطلاعات ردوبدل شده بین کاربر و سرور را با استفاده از الگوریتم RSA Public Key کد گذاری میکند تا این اطلاعات به هیچ عنوان قابل شنود نباشند، با استفاده از این الگوریتم دادهها تنها در شرایطی قابل خواندن هستند که کلید عمومی آن که در سرور قرار دارد و کلید خصوصی که در سیستم کاربر قرار دارد یک دیگر را تایید کنند در غیر اینصورت دادهها قابل کدگشایی نیستند. از آنجایی که این کلید تنها در اختیار رایانه مبدا و مقصد قرار دارد امنیت دادهها در مسیر حفظ خواهد شد و دادهها به هیچ عنوان قابل تغییر یا خواندن نخواهند بود.
چگونگی اتصال به SSH
روش ورود به SSH بسته به سیستم عامل کاربر و نوع احراز هویت استفاده شده در سرور متفاوت است که توضیحات بیشتر و آموزشها در مقالات بعدی ارائه خواهد شد اما به طور خلاصه برای ورود به یک SSH در سیستم عامل لینوکس ، BSD و همچنین MAC با استفاده از Terminal با دستور ذکر شده در زیر و برای ورود توسط سیستم عامل ویندوز با استفاده از نرم افزار PUTTY که یک نرم افزار متن باز و رایگان است میتوانید اقدام کنید.
ssh root@serverip –p port
برخی اصطلاحات رایج SSH
تا به اینجا با مفهوم و عملکرد SSH آشنا شدیم و نحو اتصال به SSH را نیز به صورت خلاصه مرور کردیم اما ممکن است برخی اصطلاحات که در این خصوص مشاهده خواهید کرد یا خواهید شنید برای شما ناشناس باشند که در زیر رایجترین آنها را با هم مرور میکنیم :
- root pass : منظور از این واژه رمز عبور برای نام کاربری root است
- SSH : نشان دهنده پروتکل SSH (حروف بزرگ)
- ssh : معمولا برای نرم افزارهای سمت کاربر استفاده میشود (حروف کوچک)
- SSHD : نشان دهنده Deamon این سرویس در لینوکس
- SSH1 : اشاره به نسخه اولیه این پروتکل
- SSH2 : اشاره به نسخه تجاری و غیر رایگان پروتکل SSH
- Open SSH : نسخه متن باز و رایگان پروتکل SSH
- SSH PORT : پورت اتصال به SSH
- SSH User : نام کاربری ورود به SSH
- SSH Pass : رمز عبور ورود به SSH
- command : دستوراتی که در محیط ترمینال یا شل درج میکنیم
- Brute Force : نوعی حمله سایبری جهت ورود به سیستم با استفاده از ارسال نامکاربری و پسوردهای تصادفی
چه کسی SSH را ابداع کرد و داستان چگونگی ثبت پورت ۲۲ برای SSH
داستان به وجود آمدن این تکنولوژی به سال ۱۹۹۵ بر میگردد، مانند اکثر ابداعات و اختراعات بشریت احساس نیاز مادر اختراع این پروتکل شده است، نیاز به کدگذاری اطلاعات که در Telnet دست یافتنی نبود مادر ابداع SSH شد، زمانی که Tatu Ylonen با شنود اطلاعات در ارتباطات Telnet مواجه شد و تصمیم گرفت راهکاری برای حل این مشکل پیدا کند، سپس اقدام به طراحی یک لایهی امن و کدگذاری شده برای Telnet کرد و حاصل تلاشهای او چیزی نبود جز اختراع SSH یا پوستهی امن!
سپس برای دریافت یک شماره پورت برای این تکنولوژی یک نامه با مضمون زیر برای IANA (سازمانی برای تخصیص شمارههای موجود در اینترنت) ارسال کرد:
سرور گرامی،
من برنامهای برای ورود امن از یک دستگاه به دستگاه دیگر نوشتهام که دیوایس را از ناامنی شبکه حفظ میکند، این برنامه نسبت به پروتکلهای موجود مانند Telnet و rLogin از امنیت و کارایی بیشتری برخوردار است و به طور خاص از شنود شدن آیپی، دیاناس و… توسط افراد سودجو جلوگیری میکند. من تصمیم دارم تا این پروتکل را به صورت رایگان در اینترنت منتشر نموده و به این ترتیب امکان استفاده گسترده از آن را فراهم نمایم، از این رو خواهان تخصیص یک شماره پورت خاص و ویژه به این پروتکل هستم. از آنجا که این شماره باید در فیلد WKS در Name Server استفاده شود، میبایست عددی بین ۱ تا ۲۵۵ باشد.
پیشنویس RFC این پروتکل در ذیل این درخواست آمده است، نرمافزار مذکور پیش از این چندین ماه به صورت لوکال مورد استفاده قرار داشته و اکنون به جز شمارهی پورت، همه چیز برای انتشار آن آماده است، اگر تمهیداتی اندیشیده شود تا اختصاص شمارهی پورت در کمترین زمان صورت گیرد، انتشار نرمافزار در هفتهی جاری امکانپذیر خواهد شد، من در حال حاضر از پورت شماره ۲۲ در تست نسخهی بتای این نرمافزار استفاده نمودهام و بسیار خرسند خواهم شد اگر همین شماره برای من در نظر گرفته شود (لازم به ذکر است که این شماره هنوز به چیزی اختصاص داده نشده است)
نام سرویس این نرمافزار SSH (مخفف Secure Shell) است.
ارادتمند شما، تاتو یلونن
سپس در نهایت ناباوری، فردای آن روز نامهای را با مضمون زیر از IANA دریافت کرد:
تاتو،
همانطور که خواسته بودید، پورت شمارهی ۲۲ را به شما اختصاص دادیم.
جویس
و در نهایت به همین راحتی پورت شمارهی ۲۲ را برای این پروتکل دریافت کرد!
SFTP روش امن انتقال فایل
Secure File Transfer Protocol که به اختصار SFTP نامیده میشود یک پروتکل امن برای انتقال فایل است که بر روی SSH اجرا میشود و امروزه یکی از متداولترین روشهای انتقال فایل بین کاربران است. میتوان این پروتکل را در مقام مقایسه بین Telnet و SSH با FTP مقایسه کرد که روش قدیمیتر انتقال فایل است FTP هم فاقد سیستم کدگذاری بود در حالی که SFTP از روش کدگذاری برای انتقال فایلها استفاده میکند تا شنود یا سرقت در مسیر انتقال غیرممکن شود.
در مقاله بعد با ما همراه باشید تا اقدامات امنیتی مورد نیاز برای سرورهای SSH را جهت افزایش هرچه بیشتر ایمنی این پروتکل مرور کنیم .