آشنایی با کلیدهای SSH و نحوه ساخت آنها

آشنایی با کلیدهای SSH و نحوه ساخت آنها

پروتکل SSH چیست؟

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

پروتکل SSH (Secure Shell) برای برقراری ارتباطی امن بین کاربر و سرور به‌کار گرفته می‌شود که جایگزین بسیار مناسب و امن‌تری نسبت به Telnet محسوب می‌شود. فناوری Telnet برای کنترل از راه دور کامپیوترها طراحی شده بود که از طریق CMD ارتباط بین دو کامپیوتر را فراهم می‌کرد. اما ارسال و دریافت اطلاعات رمزنگاری نشده هستند که امکان سوء استفاده را فراهم می‌سازد و به همین دلیل پروتکل SSH ابداع شد که این عیب بزرگ را رفع کرد.

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

کلید SSH در پروتکل SSH جایگزین بسیار خوبی برای رمز عبور و یوزرنیم‌های قدیمی است

 کلید SSH در پروتکل SSH جایگزین بسیار خوبی برای رمز عبور و یوزرنیم‌های قدیمی است
کلید SSH در پروتکل SSH جایگزین بسیار خوبی برای رمز عبور و یوزرنیم‌های قدیمی است

کلید SSH چیست؟

کلید SSH در واقع به منزله اعتبارنامه (Credential) برای ورود پیدا کردن به پروتکل SSH محسوب می‌شود و همانطور که توضیح داده شد عملکرد آن شبیه به نام کاربری و پسورد (رمز عبور) است. اما تفاوت آن در استفاده خاص از این کلیدها خلاصه می‌شود به نحوی که معمولا برای فرایندهای خودکار، ورود یکپارچه به درون سیستم توسط ادمین سیستم‌ها و یا کاربران حرفه‌ای استفاده می‌گردد.

کلیدهای SSH برای دسترسی به منابع و پلتفرم‌های بسیار مهم، فعالیت‌های محرمانه و اطلاعات رمزنگاری شده استفاده می‌شوند و به همین دلیل مدیریت آنها بسیار حائز اهمیت است و نباید فرد دیگری به آنها دسترسی داشته باشد. با وجود استاندارد بودن و استفاده مکرر از آنها در سیستم‌عامل‌های لینوکس و مک، در سیستم‌عامل‌های ویندوز هم قابل استفاده هستند و محدودیتی وجود ندارد. این کلیدها از رمزنگاری‌های پیچیده‌ای استفاده می‌کنند تا ارتباط قوی، رمزنگاری ‌شده و تا حد زیادی غیر قابل دسترسی و سوء استفاده را بین کاربر و کامپیوتر از راه دور فراهم کنند.

فناوری SSH که در این کلیدها استفاده شده بر مبنای مدل سرور – مشتری است یعنی باید از این تکنولوژی بر روی کامپیوتر هر دو استفاده شود تا ارتباط امن و رمزنگاری شده بین دستگاه‌ها از راه دور، روی شبکه‌های غیر امن مثل اینترنت، برقرار گردد.

همانطور که گفته شد، مدیران و کاربران حرفه‌ای بیشتر از همه از این کلیدها استفاده می‌کنند. این افراد از این کلیدها در موارد زیر کمک می‌گیرند:

  •  ورود به کامپیوترها یا سرورها از راه دور برای پشتیبانی و انجام تعمیرات و عیب یابی
  • انتقال فایل از یک کامپیوتر به کامپیوتر دیگر
  • اجرای دستورات کامپیوتری از راه دور بر روی کامپیوترهای مدنظر
  • ارائه پشتیبانی غیر حضوری و آپدیت سازی سیستم‌ها

از طرفی مزایای این کلیدها این است که چون در هر لحظه انتقال کلیه اطلاعات به شکل رمزنگاری شده انجام می‌گیرد، امکان سرقت اطلاعات توسط افراد مختلف و رمزگشایی آنها را نمی‌دهد. از طرفی نسبت به حملات هکری Brute Force هم آسیب ناپذیر هستند.

کلید SSH باعث رمزنگاری داده‌ها می‌شود

 کلید SSH باعث رمزنگاری داده‌ها می‌شود
کلید SSH باعث رمزنگاری داده‌ها می‌شود

انواع کلیدهای SSH

تا الان با هدف از ساخت کلید SSH و جایگزین شدن آن با پروتکل قدیمی Telnet آشنا شدید و متوجه شدید که نحوه سازوکار آن به چه صورت است. نکته مهمی که باید دقت داشت این است که کلیدهای SSH همیشه به صورت جفت تولید می‌شوند که به دو اسم کلید عمومی (Public Key) و کلید خصوصی (Private Key) معروف هستند. کلیدهای خصوصی و عمومی از عبارات منحصربه‌فرد ولی در عین حال مرتبط با یکدیگر تشکیل‌ شده‌اند.

ساختار رمزی آنها را اعداد و کاراکترهای تصادفی و طولانی تشکیل می‌دهد که با فرمول‌های ریاضی و الگوریتم‌های هندسی بسیار پیچیده تولید می‌شوند. حدس زدن این اعداد و حروف برای ماهرترین هکرها هم کار بسیار سختی است و حتی اگر کلید عمومی را هم ببینند نمی‌توانند فرمول آن را پیدا کنند. منظور از عبارات یونیک ولی مرتبط با هم برای کلیدهای خصوصی و عمومی این است که اطلاعات رمزنگاری شده موقع ارسال در کلید عمومی ذخیره می‌شوند که فقط با کلید خصوصی مرتبط با آن رمزگشایی و باز خواهد شد.

به طور دقیق‌تر عملکرد کلیدهای خصوصی و کلیدهای عمومی در پروتکل SSH بدین شرح است:

کلید عمومی (Public Key)

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

کلید خصوصی (Private Key)

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

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

کلید SSH به دو دسته خصوصی و عمومی تقسیم می‌گردد

 کلید SSH به دو دسته خصوصی و عمومی تقسیم می‌گردد
کلید SSH به دو دسته خصوصی و عمومی تقسیم می‌گردد

آموزش ساخت کلید SSH

با توجه به اینکه ترمینال یا ابزار خط فرمان در سیستم عامل‌های لینوکس (Linux) و مک (Mac) کامل بوده و به شکل پیش فرض قابلیت تولید و ساخت کلیدهای SSH را دارند و از طرفی نیز فرایند ساخت این کلیدها در هر دو سیستم عامل کاملا شبیه به یکدیگر است ابتدا با این دو مورد شروع می‌کنیم.

مراحل ساخت کلیدهای SSH در سیستم عامل‌های لینوکس و مک

  1. ابتدا دستور زیر را باید اجرا کنید:
دستور برای وارد شدن به بخش ایمیل

با وارد کردن این کد، کلیدهای SSH به آدرس ایمیل وارد شده ساخته می‌شوند.

  • بعد از اجرای دستور یا فرمان گفته شده در مرحله قبل، اکنون باید آدرس یک فایل را مشخص کنید تا کلیه کلیدهایی که ساخته خواهند شد در آن ذخیره شوند. دو راه دارید یا اینکه آدرس فایل مدنظر خود را مشخص کنید یا اینکه با زدن دکمه Enter مسیر پیش فرض انتخاب شده را تأیید نمایید.
وارد کردن آدرس یک فایل برای ذخیره اطلاعات SSH
  • در این مرحله باید عبارت عبور یا همان Passphrase مشخص کنید. اما ممکن است سؤال کنید که عبارت عبور یا Passphrase چیست؟ عبارت عبور در واقع فایل حاوی کلیدهای ساخته شده را رمزنگاری می‌کند تا موقع استفاده از آن با وارد کردن Passphrase اجازه دسترسی داشته باشید. فایده این کار این است که اگر شخصی به سیستم شما دسترسی پیدا نکرد نتواند به راحتی به کلیدهای SSH دسترسی پیدا کند و به کلیه سیستم‌های دیگری که به آن متصل هستند وارد شود. پس برای جلوگیری از چنین اتفاقی، با تعریف کردن یک عبارت عبور، لایه امنیتی جدید اضافه می‌گردد.
مشخص کردن عبارت  Passphrase

تا اینجا اگر تمامی دستورهای گفته شده را وارد کرده باشید، کلیدهای SSH ساخته شده به درستی و با لایه امنیتی Passphrase ذخیره و رمزنگاری شده‌اند.

  • اضافه کردن کلیدهای SSH به SSH-agent مرحله بعدی است. SSH-agent یک ابزار مرتبط با پروتکل SSH است که روی ترمینال سیستم‌عامل شما نصب است اما چه کاری انجام می‌دهد؟ SSH-agent کار ذخیره سازی کلیدهای خصوصی را انجام می‌دهد تا همه به آن دسترسی نداشته باشند. ضمنا درخواست‌هایی که از پروتکل SSH می‌رسند را بررسی می‌کند و تنها در صورتی که با کلیدهای خصوصی ذخیره شده در آن مطابقت داشته باشند، اجازه دسترسی خواهد داد. با این کار امنیت فرایند ارسال داده‌ها بسیار بالاتر خواهد رفت. اما برای اینکه کلیدهای SSH را به SSH-agent اضافه کنید ابتدا باید مطمئن شوید که در حال اجرا یا اصطلاحا در وضعیت Running باشد. برای فهمیدن این موضوع کد دستوری زیر را وارد نمایید:
اضافه کردن کلیدهای SSH به SSH-agent

اگر SSH-agent در حال اجرا بود، می‌توانید با کد دستوری زیر، کلیدهای ساخته شده را به آن اضافه کنید:

اضافه کردن کلیدهای ساخته شده به SSH-agent

بعد از این مرحله عملا کار شما تمام شده و با ثبت کلید SSH در SSH-agent، این کلیدها آماده برقراری ارتباط در پروتکل SSH خواهند بود.

شیوه ساخت کلید SSH در سیستم عامل‌های لینوکس و مک با ویندوز متفاوت است که در ادامه به توضیح آن می‌پردازیم.

شیوه ساخت کلید SSH در سیستم عامل‌های لینوکس و مک با ویندوز متفاوت است
شیوه ساخت کلید SSH در سیستم عامل‌های لینوکس و مک با ویندوز متفاوت است

مراحل ساخت کلیدهای SSH در سیستم عامل ویندوز

در محیط ویندوز چون ابزار خط فرمانی Unix Shell وجود ندارد برای اجرای دستورهای گفته شده باید از ابزارهای خط فرمان دیگری که با سیستم عامل ویندوز سازگاری دارند استفاده کنیم. برای این کار دو روش را می‌توانید انتخاب کنید:

1-ابزار خط فرمان Git Bash

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

2-برنامه واسط PuTTY

 این برنامه اپن سورس بوده و دانلود آن هم رایگان است. بعد از دانلود و نصب این برنامه، تنها کافیست، آدرس IP و پورت SSH (پورت شماره 22 به طور پیش فرض انتخاب شده است) را وارد کنید تا به پروتکل SSH در سرور وصل شوید.