ایجاد یک اتصال SSH (Secure Shell) برای ورود به سرور و مدیریت موثر یک سرور راه دور امری ضروری است. کلیدهای رمزگذاریشده یا به عبارتی (Encrypted Keys)مجموعهای از مجوزهای دسترسی هستند که برای ایجاد یک اتصال Secure استفاده میشوند که در این مقاله به شما توضیح میدهیم که چگونه SSH key را در اوبونتو تولید کنید. ما همچنین در توضیحات تنظیم احراز هویت مبتنی بر SSH Key را برای اتصال به سرور بدون نیاز به رمز عبور پوشش خواهیم داد.
برای ایجاد SSH Key نیاز است موارد زیر را با هم مرور کنیم:
- یک سرور با سیستم عامل ابونتو داشته باشید.
- ایجاد یک یوزر با دسترسی Sudo
- دسترسی SSH یا ترمینال
ایجاد SSH Key در Ubuntu
قدم اول: Pair را در SSH key ایجاد کنید.
در سیستم کلاینت خود -سیستمی که برای اتصال به سرور استفاده میکنید- باید یک Pair یا جفت SSH Key ایجاد کنید.
برای ایجاد Pair در کد SSH Key ، دستورات زیر را وارد کنید:
mkdir –p $HOME/.ssh
chmod 0700 $HOME/.ssh
ssh-keygen
این دستور یک دایرکتوری مخفی برای ذخیره کلیدهای SSH شما و تغییر مجوزهای آن دایرکتوری ایجاد میکند. دستور SSH-Keygen یک جفت کلید 4096 بیتی RSA ایجاد میکند.
بهتره برای امنیت بیشتر از RSA4096 استفاده کنید:
ssh –keygen –t rsa 4096
اگر قبلاً یک Key Pair ایجاد کردهاید، از شما خواسته میشود که آنها را بازنویسی کنید و آن کلیدهای قدیمی دیگر کار نخواهند کرد. از این رو سیستم از شما میخواهد که Password به عنوان یک لایه امنیتی اضافی ایجاد کنید. یک Password به یادماندنی وارد کنید و Enter را فشار دهید.
قدم دوم: Public Key را در سرور ابونتوی خود کپی کنید.
در ابتدا آدرس IP سرور اوبونتو را که میخواهید به آن متصل شوید، دریافت کنید.
کامند زیر را نیز در محیط SSH اجرا کنید.
ip a
در سیستم کلاینت از دستور ssh-copy-id
برای کپیکردن اطلاعات هویتی در سرور اوبونتو استفاده کنید.
server_IP را با آدرس IP واقعی سرور خود جایگزین کنید و اگر این اولین باری است که به سرور متصل میشوید، ممکن است پیامی مبنی بر این که صحت هاست ثابت نمیشود را مشاهده کنید:
The authenticity of host '192.168.0.15 (192.168.0.15)' 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 را تایپ کنید و سپس Enter بزنید.
در این سیستم، کلاینت شما را برای کلید id_rsa.pub که قبلا تولید شده بود، بررسی میکند. سپس از شما میخواهد که رمز عبور حساب کاربری سرور را وارد کنید. آن را تایپ کنید (سیستم رمز عبور را نمایش نمی دهد) و Enter را فشار دهید.
سیستم محتویات ~/.ssh/id_rsa.pub را از سیستم کلاینت در دایرکتوری ~/.ssh/authorized_keys سیستم سرور کپی میکند.
سیستم شما باید عبارت زیر را نمایش دهد:
Number of key(s) added: 1
روش جایگزین برای کپی دستی SSH Key
اگر سیستم شما دستور ssh-copy-id را ندارد، میتوانید کلید را به صورت دستی روی SSH کپی کنید و از دستور زیر استفاده کنید.
cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"
قدم سوم: Log In To The Remote Server
برای ورود به سرور، دستور زیر را وارد کنید.
ssh username@server_IP
سیستم نباید رمز عبور بخواهد، زیرا در حال مذاکره با یک اتصال امن با استفاده ازSSH Key است. اگر از یک Password امنیتی استفاده کردهاید، از شما خواسته میشود که آن را وارد کنید. پس از انجام این کار، وارد سیستم میشوید
نکته:اگر این اولین باری است که وارد سرور میشوید، ممکن است پیامی مشابه پیام قسمت دوم مشاهده کنید. از شما میپرسد که آیا مطمئن هستید که میخواهید وصل شوید - Yes را تایپ کرده و Enter را فشار دهید.
قدم چهارم:Disable Password Authentication
فایل sshd_config را Edit کنید:
sudo nano /etc/ssh/sshd_config
فایل را جستجو کنید و گزینه PasswordAuthentication را پیدا کنید.
آن را ویرایش کنید و مقدار آن را به No تغییر دهید.
PasswordAuthentication no
فایل را ذخیره کرده و خارج شوید، سپس سرویس SSH را مجددا راهاندازی کنید.
sudo systemctl restart ssh
قبل از اینکه Session را ببندید، اطمینان حاصل کنید که SSH هنوز کار میکند:
ssh username@server_IP
اگر همه چیز درست شد، میتوانید به آن خاتمه دهید و به طور عادی کار را از سر بگیرید.