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

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

 

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

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

 

گام اول ایجاد جفت کلید RSA

اولین قدم ایجاد جفت کلید بر روی کامپیوتر کاربر می‌باشد:

ssh-keygen -t rsa

 

گام دوم ذخیره کلیدها و گذرواژه

به محض اینکه دستور مرحله قبل را اجرا کردید، تعدادی سوال از شما پرسیده می‌شود:

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

- آدرس مکانی که میخواهید کلید ها در آنجا ذخیره شوند

 

Enter passphrase (empty for no passphrase):

- رمز برای استفاده از کلیدها

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

فرآیند ساخت کلیدها به صورت زیر می‌باشد:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/jeyserver/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/jeyserver/.ssh/id_rsa.
Your public key has been saved in /home/jeyserver/.ssh/id_rsa.pub.
The key fingerprint is:
4a:dd:0a:c6:35:4e:3f:ed:27:38:8c:74:44:4d:93:67 demo@a
The key's randomart image is:
+--[ RSA 2048]----+
|          .oo.   |
|         .  o.E  |
|        + .  o   |
|     . = = .     |
|      = S = .    |
|     o + = +     |
|      . o + o .  |
|           . o   |
|                 |
+-----------------+

در مثال بالا، کلید عمومی ساخته شده در آدرس  home/jeyserver/.ssh/idrsa.pub  و کلید خصوصی در آدرس home/jeyserver/.ssh/id_rsa  قرار دارند.

 

گام سوم - اضافه کردن کلید عمومی به سرور

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

می‌توانیم کلید عمومی را با دستور ssh-copy-id  در سرور کپی کنیم. نام کاربری و رمز عبور خود را با مقادیر زیر جایگزین کنید:

ssh-copy-id system@123.456.789.321

- توجه: اگر شما کاربر مک هستید، ssh copy-id بر روی دستگاه شما نصب نیست. با این حال، شما می توانید با استفاده از Homebrew آن را نصب کنید:

brew install ssh-copy-id

 

راه دیگری هم برای اضافه کردن کلید عمومی به سرور وجود دارد:

cat ~/.ssh/id_rsa.pub | ssh system@123.456.789.321 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >>  ~/.ssh/authorized_keys"

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

The authenticity of host '123.456.789.321 (123.456.789.321)' can't be established.
RSA key fingerprint is b1:2d:33:67:ce:35:4d:5f:f3:a8:cd:c0:c4:48:86:12.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '123.456.789.321' (RSA) to the list of known hosts.
system@123.456.789.321's password: 

این پیام به ما کمک می کند تا از اضافه نکردن کلیدهای اضافی اطمینان حاصل کنیم.

تبریک! اکنون می‌توانید بدون وارد کردن رمز، به سرور خود متصل شوید.

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

گام چهار (دلخواه) - غیرفعال کردن رمز عبور برای ورود کاربر Root

هنگامی که کلیدهای SSH را بر روی سرور خود کپی کردید و مطمئن هستید که تنها با کلیدهای SSH می توانید وارد شوید، می توانید ادامه دهید و ورود به سیستم root را محدود و تنها از طریق کلیدهای SSH قابل دسترس کنید.
برای انجام این کار، فایل کانفیگ SSH را باز کنید:

sudo nano /etc/ssh/sshd_config

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

PermitRootLogin without-password

پس از اتمام، فایل را ذخیره کرده و آن را ببندید.

برای اجرای این تغییرات دستور زیر را وارد کنید:

sudo systemctl reload sshd.service