Technical Writer - https://arastoo.net
SSH چیست و چگونه کار میکند؟
از زمانی که کامپیوترها به وجود آمدند همواره یک فکر در ذهن دانشمندان و محققان وجود داشت و آن این بود که چگونه این کامپیوترها را به همدیگر متصل کنیم. در این نقطه تاریخی بود که شبکههای کامپیوتر شکل گرفت و کامپیوترها توانستند از طریق یکسری امکانات و قوانین با همدیگر ارتباط برقرار کنند.
محققان دنیای شبکه از آن زمان یکسری قواعد برای ارتباط برقرار کردن کامپیوترها تعریف کردند. Telnet یکی از این موارد بود که با استفاده از آن یک کامپیوتر میتوانست کنترل یک کامپیوتر دورتر از خود را بر عهده بگیرد.
مشکل اساسی که این روش/پروتکل داشت این بود که امنیت کافی نداشت و هر کسی میتوانست از وسط وارد شبکه شده و در کارهایی که انجام میشد دخالت کند، حتی میتوانست دادههایی که در حال نقل و انتقال است را کنترل کرده و اطلاعاتی را بدزدد. در اواسط دهه ۹۰ میلادی یک روش جدید با امنیت بسیار بالاتر برای انجام کارهای پروتکل Telnet ارائه شد که با نام SSH معرفی شد. در واقع SSH یک روش هوشمند و جدید با ضریب امنیت بالا بود که امکان برقراری ارتباط میان کامپیوترها را فراهم میکرد.
اگر در زمینه توسعه اپلیکیشن یا مدیریت سیستم کار کرده و تجربه داشته باشید مطمئنا نام SSH را شنیدهاید و حتی با آن کار کردهاید. اگر که با آن تجربه کاری ندارید باید بگویم که SSH یکی از ضروریات اصلی دنیای کامپیوتر بوده و شما حتما و ناچارا باید آن را یاد گرفته و شیوه استفاده صحیح آن را بدانید.
SSH چیست و چه نیازی را حل میکند؟
SSH یا Secure Shell یا Secure Socket Shell یک پروتکل دنیای شبکه است که به ما اجازه میدهد تا به صورت امن به کامپیوترهای ریموت متصل شویم. منظور از کامپیوتر ریموت در واقع هر نوع ماشین یا دستگاهیست که قابلیتهای ارتباطی دارد. بیشتر توسعه دهندگان و مدیران سیستم از SSH برای ارتباط با یک سرور ریموت استفاده میکنند.
SSH به صورت استاندارد و درستی رمزنگاری شده و میتواند در امنیت بالایی توسعه دهندگان و مدیران شبکه را برای مدیریت سیستمها و اپلیکیشنها، اجرای دستورات، به اشتراک گذاری فایلها و... به یک ریموت سرور وصل کند.
SSH در سال ۱۹۹۵ ساخته شد و هدف اصلی آن نیز حل کردن مشکلات امنیتی بود که در پروتکلهای rlogin، rsh و Telnet وجود داشت. برای آشنایی با ضرورت ایجاد SSH بیایید کمی به عقب و زمانی که Telnet ایجاد شد برگردیم.
Telnet که مخفف دو کلمه Teletype Network بود در سال ۱۹۶۹ ایجاد شد. کلیت تلنت یک ابزار مبتنی بر خط فرمان بود که این امکان را به کاربران کامپیوتر میداد تا بتوانند به یک سرور متصل شده و در آن (حتی از راه دور) دستوراتی را اجرا کنند. این دستورات قابلیت اجرا کردن برنامهها، ایجاد دایرکتوری، حذف و انتقال فایل، شروع و متوقفسازی سرویسها و... را به کاربران میداد. تمام این اتفاقات با انتقال و دریافت یکسری پیام در قالب متن ساده انجام میشد.
مشکلی که در این ابزار وجود داشت این بود که دادههایی که بین دو دستگاه منتقل میشد در واقع در شبکههای بسیار زیادی قرار میگرفت. از طرفی برخی از این شبکهها و برخی از این حالات انتقال نا امن بوده و ممکن بود دادههای ارسالی شنود شده و حتی قبل از اجرا شدن تغییر پیدا میکردند.به همین دلیل بود که تلنت کنار گذاشته شد و جایگزین امنتری برای آن یافت شد.
در اوایل که شبکههای کامپیوتر ایجاد شد از آنجایی که امنیت داشتن معیار چندان مهمی به شمار نمیرفت تمام ارتباطات از طریق یک متن عادی انجام میشد. خاصیت چنین حالتی نیز این است که دستکاری کردن و مشاهده کردن آن بسیار ساده بوده و در مسیر انتقال بین کلاینت و سرور ممکن است هر کسی که به آن دسترسی دارد به راحتی اطلاعات داخل آن را مشاهده بکند چرا که هیچ رمزنگاری اتفاق نیافتاده است.
با در نظر گرفتن این موضوع شما هیچوقت نمیتوانستید به روشهای قدیمی برای کار با اطلاعات حساس اتکا کنید. در همین زمان بود که SSH به عنوان یک جایگزین امن و مناسب ارائه شد.
SSH چگونه کار میکند؟
SSH از یک معماری مبتنی بر Client-Server برای ارتباط دادن کاربر با ریموت سرور استفاده میکند. البته این یک روش عادی نیست چرا که SSH هدف اصلیاش برقرار کردن ارتباط امن است. به صورت پیشفرض نیز سرور SSH پورت ۲۲ را اشغال کرده که پیشنهاد میشود برای امنیت بیشتر حتما آن را تغییر دهید.
برای اجرا کردن فرایند احراز هویت و اعتبار سنجی میان سرور و کلاینت، SSH از یک تکنیک رمزنگاری موسوم به Public-Key استفاده میکند. علاوه بر این موارد، اس اس اچ از یک سیستم رمزنگاری متقارن قدرتمند و الگوریتم هشینگ پیچیده برای تبادل پیامها میان سرور و کلاینت استفاده میکند.
در بیشتر نشستهای SSH تنها دو عملیات زیر انجام خواهد گرفت:
- احراز هویت
- اجرا دستورات
در فرایند احراز هویت سرورهای SSH کلاینتها را با چندین روش اعتبار سنجی میکنند. دو روش محبوب برای انجام این کار به شکلهای زیر است:
- استفاده از پسورد یا Password Based
- استفاده از کلید یا Key Based
روش پیشفرض برای احراز هویت در اس اس اچ استفاده کردن از پسورد است. مطمئنا این روش ایمنترین حالت ممکن نیست اما پایهای ترین روش برای احراز هویت به شما میرود. حتی با وجود اینکه پسورد از طریق کلاینت به سرور به صورت امن ارسال میشود اما حملات Brute Force میتوانند به امنیت این روش صدمه وارد کنند.
از طرفی دیگر روش استفاده کردن از کلید یا Key Based وجود دارد که ایمنتر از روش قبلی بوده و برای پیادهسازی آن جفت کلیدهای SSH یا SSH Key Pairs ایجاد میشود.
بعد از اینکه سرور عملیات احراز هویت را به پایان رساند و موفقیت آمیز بود یک ارتباط امن ایجاد خواهد شد.
دسترسی به سرور ریموت با استفاده از SSH
برای دسترسی پیدا کردن به یک سرور ریموت شما باید حداقل دو چیز را بدانید. Server Host و Username. اگر این دو مورد را میدانید دستور زیر را در ترمینال خود کپی کرده و به جای Username و Host و Port موارد مربوط به خودتان را وارد کنید.
$ ssh <user-name> @ <host> -p <port-no>
زمانی که شما این دستور را وارد کردید از شما رمز عبور درخواست میشود که با وارد کردن آن به درستی میتوانید به سرور ریموت متصل شوید.
در پایان
دانستن چگونه کار کردن با SSH یک موضوع حیاتی و بسیار مهم برای برنامهنویسها به حساب میآید چرا که شما در نهایت نیاز دارید که با سرورهای مختلف ارتباط برقرار کنید. داشتن توانایی کار با SSH همچنین رزومه شما را پُر بارتر کرده و همه چیز به نفع شما تمام میشود.
ما در این مقاله به صورت کوتاه و خلاصه در ارتباط با چیستی SSH صحبت کردیم اما در آینده و مقالات دیگر به صورت کاملتر در ارتباط با این موضوع صحبت خواهیم کرد.
مطلبی دیگر از این انتشارات
6 نکته کوتاه برای بهبود UI
مطلبی دیگر از این انتشارات
آشنایی با Functional Programming
مطلبی دیگر از این انتشارات
آشنایی با زبان برنامه نویسی GO