ساخت کلید عمومی ssh در لینوکس

ssh چیست؟ چگونه کلید عمومی SSH تولید کنیم؟

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

SSH از مکانیسم های مختلفی برای تایید اعتبار پشتیبانی میکند. از این اتصال رمزنگاری شده برای اجرای دستورات بر روی سرور، تونل های X11، انتقال پورت (port forwarding) و غیره استفاده میشود.

استفاده از احراز هویت کلید عمومی مبتنی بر استفاده از امضاهای دیجیتالی است و نسبت به تایید رمز عبور سنتی، ایمن تر و راحت تر است.

در این مقاله نحوه تولید کلید های عمومی SSH در توزیع Debian 10 توضیح داده شده است. همچنین نحوه تنظیم احراز هویت مبتنی بر کلید SSH و اتصال به سرورهای لینوکسی با استفاده از Remote Connection بدون وارد کردن رمز عبور را نشان خواهیم داد.

ساخت کلید SSH در دبیان 10

حوه تولید کلید های عمومی SSH در توزیع Debian 10 توضیح داده شده است. همچنین نحوه تنظیم احراز هویت مبتنی بر کلید SSH و اتصال به سرورهای لینوکسی با استفاده از Remote Connection  بدون وارد کردن رمز عبور را نشان خواهیم داد.

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

با استفاده از دستور ls چک میکنیم آیا فایل کلید SSH در سیستم وجود دارد یا خیر :

ls -l ~/.ssh/id_*.pub

اگر خروجی دستور بالا به این صورت بود :
No such file or directory یا no matches found
به این معنی است که شما هیچ کلید SSH را ندارید، شما با ادامه مراحل بعدی می توانید یک کلید SSH جدید را تولید کنید.

اگر کلید اس اس اچ وجود داشت شما میتوانید از آن یک BackUp تهیه کنید و مجدد به تولید public key بپردازید.

یک کلید SSH به طول 4096 بیت با استفاده وارد کردن ایمیل آدرس خود در دستور زیر بسازید:

"ssh-keygen -t rsa -b 4096 -C "your_email@domain.com

خروجی شما شبیه به زیر میباشد:

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

کلید Enter را فشار دهید تا در محل ذکر شده فایل کلید ساخته شود.

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

Enter passphrase (empty for no passphrase):

اگر مایل به وارد کردن رمز عبور نیستید کلید Enter را بدون وارد کردن متنی فشار دهید.

ساخت کلید SSH در دبیان و نحوه کار با ssh در لینوکس
یک کلید ssh به طول 4096 بیت

برای اطمینان حاصل کردن از تولید کلید عمومی ssh دستور زیر را وارد نمایید:

ls ~/.ssh/id_*

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

/home/yourusername/.ssh/id_rsa /home/yourusername/.ssh/id_rsa.pub

کپی کردن کلید عمومی در سرور

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

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

دستور زیر را در دستگاه فعلی خود وارد نمایید :

ssh-copy-id remote_username@server_ip_address

در ادامه از شما خواسته میشود رمز عبور ، ریموت یوزر را وارد نمایید :

remote_username@server_ip_address's password:

پس از تأیید اعتبار کاربر ، محتوای فایل کلید عمومی ssh/id_rsa.pub./~ به فایل ریموت یوزر ssh/authorized_keys./~ اضافه و اتصال بسته میشود.

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'username@server_ip_address'"
and check to make sure that only the key(s) you wanted were added.

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

cat ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

ورود به سرور از طریق کلید SSH

ورود به سرور از طریق SSH

در این مرحله شما بدون وارد کردن رمز عبور میتوانید به سرور از راه دور خود لاگین کنید.

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

ssh remote_username@server_ip_address

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

آموزش غیرفعال کردن ورود به SSH از طریق رمز عبور

آموزش غیرفعال کردن ورود به SSH از طریق رمز عبور

استفاده از رمز عبور برای احراز هویت در ssh یک امر لایه اضافی امنیتی محسوب میشود که اگر از آن استفاده میکنید در ادامه آموزش غیرفعال کردن ورود به SSH از طریق رمز عبور آشنا میشوید.

به سرور خود از طریق ssh لاگین کنید :

ssh sudo_user@server_ip_address

از طریق یک ادیتور متنی فایل کانفیگ ssh server را باز کنید :

sudo nano /etc/ssh/sshd_config

به دنبال متن زیر در فایل sshd بگردید و به شکل زیر آن را تغییر دهید :

PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no

پس از ایجاد تغییرات باید سرویس اس اس اچ را غیرفعال کنید. نحوه غیرفعال کردن سرویس ssh در لینوکس به این صورت می باشد :

sudo systemctl restart ssh

شما موفق شدید! رمز عبور هنگام لاگین کردن به سرور از طریق اس اس اچ را غیرفعال کنید.

نتیجه

ما به شما نشان داده ایم که چگونه یک جفت کلید جدید SSH تولید کنید و احراز هویت مبتنی بر کلید SSH را تنظیم کنید. برای مدیریت چندین سرور از راه دور می توانید از همان کلید استفاده کنید. همچنین آموخته اید که چگونه رمز عبور SSH را غیرفعال کنید و یک لایه امنیتی بیشتر به سرور خود اضافه کنید.

درباره نویسنده: AfshinBalakar

افشین بالاکار دانشجوی مهندسی تکنولوژی نرم افزار، مدت 5 سال است با لینوکس رابطه افلاطونی دارم.

مطالب زیر را حتما بخوانید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *