شما برای مطالعه این مقاله فقط 7 دقیقه وقت نیاز دارید

create-ssh-key-in-linux

آموزش ساخت و تنظیم کلید SSH در لینوکس برای اتصال امن به سرور

4.7/5 - (3 امتیاز)

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

SSH یک جانشین برتر Telnet است که از جفت کلید عمومی و خصوصی برای اعتبارسنجی و احرازهویت کاربران استفاده می کند. ssh-keygen ابزار لازم برای ساخت این کلیدها است.

اگر به دنبال یادگیری نحوه کار SSH و آموزش تنظیم کلید SSH در لینوکس هستید تا در کنار اتصال امن به سرور خود، فایل های موردنظر را هم با دقت و امنیت بیشتری رد و بدل کنید، در جای درستی قرار دارید:

احراز هویت با کلید SSH

احراز هویت با کلید SSH

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

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

با اینکه روش های امن زیادی برای اتصال امن به سرور وجود دارند ولی در بین آنها، کلیدهای SSH یکی از راهکارهای بسیار مناسبی هستند که درجه امنیت و اطمینان ارتباط کلاینت و سرور را بالا می برند.

در این روش با استفاده ssh-keygen یک جفت کلید عمومی و خصوصی ایجاد می شود. کلید عمومی مخصوص سرور و کلید خصوصی هم مخصوص کلاینت است. کلاینت باید حساسیت زیادی در نگهداری از کلید خصوصی داشته باشد چون اگر یک لحظه غفلت کند، هکر می تواند به آن کلید دسترسی پیدا کند و بدون هیچ مرحله اضافی برای احراز هویت به سرور مرتبط با کلید عمومی متصل شود.

کلید عمومی که مربوط به سرور است، قابل اشتراک است چون بدون داشتن کلید خصوصی مرتبط با آن، به هیچ وجه نمی توان به آن وصل شد. در واقع، روش کار احراز هویت کلید SSH در لینوکس به صورت زیر است:

– بعد اینکه جفت کلید عمومی و خصوصی SSH ایجاد شد، کلید عمومی در سرور ریموت آپلود می شود. این کلید به فایل خاصی به اسم ssh/authorized_keys./~ اضافه می شود.

– وقتی کلاینت سعی می کند که با استفاده از کلیدهای SSH احراز هویت کند، سرور بررسی می کند که آیا کلاینت موردنظر کلید خصوصی درست را در اختیار دارد یا نه. اگر کلاینت بتواند ثابت کند که مالک حقیقی کلید خصوصی است یک shell session ایجاد می شود یا دستور درخواستی کلاینت اجرا می شود.

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

SSH-KEYGEN چیست؟

ssh-keygen ابزاری است که برای ساخت، مدیریت و تبدیل کلیدهای احراز هویت SSH استفاده می شود. این ابزار به صورت پیش فرض همراه SSH در اکثر سیستم عامل های لینوکس نصب می شود. در کل، این ابزار برای ایجاد کلید از 3 الگوریتم زیر استفاده می کند:

حداقل 2048 بیت RSA

1024 بیت  – DSA

 256، 384 و 521 بیت ECDSA

الگوریتم پیش فرض ssh-keygen، RSA است که سایز بیت آن 3072 است ولی در صورت تمایل می توانید به جای آن از الگوریتم دیگری استفاده کنید. برای تعیین نوع الگوریتم از آپشن t– و اندازه بیت از b– استفاده می شود که در ادامه نحوه اجرای آن را توضیح خواهیم داد.

مراحل تنظیم کلید SSH در لینوکس

مراحل تنظیم کلید SSH در لینوکس

برای اینکه بتوانید احراز هویت بر اساس کلید SSH را برای سرور خود فعال کنید اول باید جفت کلید عمومی – خصوصی را ایجاد کنید و بعد مراحل پیکربندی را طی کنید.

1. جفت کلید SSH را ایجاد کنید.

همانطور که قبلاً هم اشاره کردیم برای ایجاد این جفت کلید باید از ابزار ssh-keygen استفاده کنید. پس، ترمینال سیستم خود را باز کرده و دستور زیر را اجرا کنید:

ssh-keygen

اگر هم می خواهید از الگوریتم دیگری استفاده کنید می توانید دستور بالا را به صورت زیر اجرا کنید:

ssh-keygen -t rsa -b 4096

خروجی دستور ایجاد کلید SSH به صورت زیر است:

Generating public/private rsa key pair.

// enter the name for ssh key pairs

Enter file in which to save the key (/home/ASAM/.ssh/id_rsa):

// enter passphrase for security

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

همانطور که میینید، خروجی از شما می خواهد که فایل موردنظر برای ذخیره کلیدها و  رمز عبور کلید خصوصی را تعیین کنید.

اگر مسیر خاصی را برای ذخیره کلید در نظر ندارید، بهتر است با همان حالت پیش فرض ( کلید عمومی در id_rsa.pub و کلید خصوصی در id_rsa مربوط به دایرکتوری ssh./~ موجود در دایرکتوری root) ادامه دهید و در خط دوم بدون وارد کردن چیزی، Enter را بزنید.

کلیک کنید  چگونه مشکل بوت نشدن اوبونتو را حل کنیم؟ ۶ روش رایج رفع آن

این کار باعث می شود که سیستم شما موقع احراز هویت، کلید های SSH را به طور خودکار پیدا کند. اگر قبلاً کلیدهای دیگری در این فایل ها ایجاد کرده اید، انتخاب همان فایل باعث Overwrite می شود که اگر مشکلی با این قضیه ندارید، Y را بزنید.

overwrite شدن کلیدهای ssh

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

بعد وارد کردن یک رمز قوی، کار ساخت کلید SSH در لینوکس تمام می شود.

2. کلید عمومی را در سرور ریموت آپلود کنید.

راه های زیادی برای آپلود کردن رمز عبور عمومی در سرور ریموت وجود دارد که نتیجه همه آنها یکی است ولی اگر نمی خواهید برای این انجام این مرحله، مراحل اضافی تری را هم طی کنید، ساده ترین راه را انتخاب کنید یعنی از ssh-copy-id استفاده کنید.

این ابزار در اکثر سیستم ها موجود است و تنها کاری که باید انجام دهید این است که با استفاده از نام کاربری حساب خود در سرور ریموت و آدرس IP خود سرور، دستور زیر را اجرا کنید:

ssh-copy-id username@remote_server-IP

البته، شاید به این فکر می کنید که در این دستور هیچ اشاره ای به مسیر کلید عمومی نشده است پس عمل کپی یا آپلود چگونه انجام می شود؟

این ابزار سیستم را اسکن می کند و تا وقتی کلید عمومی (id_rsa.pub ) را پیدا نکرده است، رمز عبور حساب کاربری SSH را از شما نمی خواهد ولی اگر در این مورد نگران هستید می توانید مسیر کلید را به صورت زیر در دستور لحاظ کنید:

ssh-copy-id -i $HOME/.ssh/id_rsa.pub username@remote_server-IP

بعد این ابزار رمز عبور مربوط به حساب شما در سرور ریموت را درخواست می کند و اگر آن را به درستی وارد کنید، پروسه کپی کلید عمومی شروع می شود. در واقع، کلید عمومی موجود در سیستم شما در فایل authorized_keys موجود در دایرکتوری ssh./~ سرور کپی می شود.

3. اتصال SSH را تست کنید.

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

برای اتصال به سرور از طریق SSH دستور زیر را وارد کنید:

ssh username@remote_server-IP

البته، اگر در حین اجرای دستورات SSH یا ssh-copy-id با خطای زیر مواجه شدید، نیازی به نگرانی نیست چون نشانه این است که سیستم شما، سرور ریموت را نمی شناسد. پس تنها کاری که باید انجام دهید این است که Yes را تایپ کنید و Enter را بزنید تا اجرای دستور ادامه پیدا کند.

The authenticity of host IP (IP…)’ can’t be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

همچنین، اگر در پروسه ایجاد کلید SSH در لینوکس برای کلید خصوصی خود رمز عبور (passphrase) مشخص کردید، موقع اتصال SSH این رمز عبور از شما درخواست می شود که باید آن را وارد کنید تا در سرور ریموت shell session جدیدی برای حساب کاربری شما ایجاد شود.

نحوه حذف احراز هویت با رمز عبور در SSH

با اجرای مراحل بالا، کار تنظیم کلید SSH در لینوکس تمام شده است ولی اگر امنیت پایین روش قدیمی یعنی احراز هویت با رمز عبور باعث نگرانی شما شده است و می ترسید که سرور یا هاست شما در معرض حملاتی مثل بروت-فورس قرار بگیرد، بهترین کار این است که این نوع احراز هویت را غیرفعال کنید تا از این به بعد احراز هویت شما از طریق کلید SSH انجام شود.

برای این کار با استفاده از کلید SSH وارد حساب خود در سرور ریموت شوید و فایل پیکربندی SSH Daemon را باز کنید:

sudo nano /etc/ssh/sshd_config

عبارت PasswordAuthentication را جستجو کنید و اگر در حالت کامنت قرار داشت، # موجود در اول خط را حذف کنید تا از حالت کامنت در بیاید.

بعد PasswordAuthentication را به PasswordAuthentication no تغییر دهید. بعد فایل را ذخیره کنید و ببندید. برای اینکه این تغییر اعمال شود باید سرویس را ری استارت کنید. پس دستور زیر را اجرا کنید:

sudo systemctl restart ssh

بعد از اجرای این دستورات، قابلیت احراز هویت با رمز عبور غیرفعال می شود. از این بعد برای اتصال به سرور ریموت از کلیدهای SSH استفاده می شود.

 

کلام آخر

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

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

 

سوالات متداول:

ssh-copy-id ساده ترین روش برای کپی کلید عمومی است ولی اگر این ابزار برای شما کار نکرد، می توانید از روش دو روش زیر استفاده کنید:

دستور cat و ssh:

ssh-copy-idcat ~/.ssh/id_rsa.pub | ssh username@remote_server-IP "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

کپی محتوای کلید عمومی به صورت دستی:

کافیست دایرکتوری ssh./~ و فایل authorized_keys را به صورت دستی در سرور ایجاد کنید و محتوای id_rsa.pub که همان کلید عمومی است را در این فایل کپی پیست کنید.

مطالب مشابهی که شاید علاقمند باشید

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

دیدگاه های شما

برای دریافت این مقاله لطفا ایمیلتان را وارد کنید

می توانید مقاله را دانلود کنید یا پرینت بگیرید