SSH یک پروتکل رمزگذاریشده برای مدیریت و برقراری ارتباط با سرورهاست. هنگام کار با یک سرور لینوکس، بیشتر زمان شما در یک ترمینال که از طریق SSH به سرور متصل است، میگذرد. کلیدهای SSH راهی امن برای ورود به سرور فراهم میکنند و به همهی کاربران توصیه میشود به جای رمز عبور از کلید SSH استفاده کنند.
در
در این راهنما، ما به تنظیم کلیدهای SSH در Ubuntu 20.04 میپردازیم.
گام اول: ایجاد کلیدهای عمومی و خصوصی
اولین قدم این است که با دستور زیر یک جفت کلید در یک سرور ایجاد کنید:
ssh-keygen
بهطور پیشفرض، نسخههای اخیر ssh-keygen یک جفت کلید 3072 بیتی از نوع RSA ایجاد میکنند که در بیشتر موارد کاملن امن هستند. با این حال، میتوانید بهشکل اختیاری فلگ b 4096-
را برای ایجاد یک کلید 4096 بیتی بزرگتر به دستور اضافه کنید.
پس از اجرای این دستور، خروجی زیر را مشاهده میکنید:
Enter را فشار دهید تا جفت کلید را در ssh./
ذخیره کنید یا یک مسیر جایگزین را مشخص کنید.
اگر قبلن یک جفت کلید SSH ایجاد کرده باشید، ممکن است خروجی زیر را مشاهده کنید:
اگر بخواهید کلید را روی دیسک بازنویسی کنید، دیگر نمیتوانید با استفاده از کلید قبلی احراز هویت کنید. هنگام انتخاب بله (y) بسیار مراقب باشید، زیرا این فرآیند قابل برگشت نیست.
سپس باید خروجی زیر را مشاهده کنید:
در این گام میتوانید بهطور اختیاری یک Passphrase امن وارد کنید، که برای امنتی بیشتر توصیه میشود این کار را انجام دهید. Passphrase یک لایهی امنیتی اضافی به کلیدتان میافزاید تا از ورود کاربران غیر مجاز به سرور جلوگیری کند.
سپس باید خروجیای مشابه زیر مشاهده کنید:
اکنون یک کلید عمومی و خصوصی دارید که میتوانید از آن برای احراز هویت استفاده کنید. مرحله بعدی این است که کلید عمومی را روی سرور خود قرار دهید تا بتوانید از احراز هویت مبتنی بر کلید SSH برای ورود به سیستم استفاده کنید.
گام دوم: کپی کردن کلید عمومی در سرور
سریعترین راه برای کپی کردن کلید عمومی در سرور اوبونتو استفاده از ابزاری به نام ssh-copy-id
است.
کپی کردن کلید عمومی با استفاده از ssh-copy-id
این ابزار به طور پیش فرض در بسیاری از سیستم عاملها گنجانده شده است، بنابراین احتمالن آن را در سیستم خود دارید. برای اینکه این روش کار کند، باید از قبل به سرور خود دسترسی SSH مبتنی بر رمز عبور داشته باشید.
برای استفاده از این ابزار، سروری که میخواهید به آن متصل شوید و نام کاربری که دسترسی SSH با رمز عبور به آن دارید را مشخص میکنید. این نام کاربریای است که کلید عمومی SSH در آن کپی میشود.
ssh-copy-id username@IP
ممکن است پیام زیر را مشاهده کنید:
“yes” را تایپ کنید و برای ادامه ENTER را فشار دهید.
در مرحله بعد، رمز عبورسرور را از شما میخواهد:
رمز عبور را تایپ کنید و ENTER بزنید. این ابزار با استفاده از رمز عبوری که شما وارد کردید به حساب موجود در سرور متصل میشود. سپس محتویات ssh/id_rsa.pub./~
سرور شما را در مسیر ssh./~
سرور و فایلی به نام authorized_keys
کپی میکند.
شما باید خروجی زیر را ببینید:
کپی کردن کلید عمومی بهشکل دستی
اگر دسترسی SSH مبتنی بر رمز عبور به سرور خود ندارید، باید فرآیند بالا را بهشکل دستی انجام دهید.
برای نمایش محتوای id_rsa.pub
کلید خود، این دستور را اجرا کنید:
cat ~/.ssh/id_rsa.pub
محتوای کلید را خواهید دید که باید چیزی شبیه به این باشد:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== demo@ArvanCloud
به سرورتان متصل شوید و مطمین شوید که دایرکتوری ssh./~
وجود دارد. اگر این دایرکتوری را نداشتید، با دستور زیر آن را بسازید:
mkdir -p ~/.ssh
اکنون میتوانید فایل authorized_keys
را در این دایرکتوری ایجاد کنید و محتویات id_rsa.pub
را به انتهای فایل اضافه کنید:
echo public_key_string >> ~/.ssh/authorized_keys
در دستور بالا، public_key_string را با خروجی دستور قبلی که با ssh-rsa شروع میشد، جایگزین کنید.
در نهایت، Permissionهای لازم را به این دایرکتوری میدهیم:
chmod -R go= ~/.ssh
اگر از root برای تنظیم کلیدهای استفاده میکنید، مهم است که دایرکتوری ssh./~ متعلق به کاربر موردنظرتان باشد نه کاربر root:
chown -R username:username ~/.ssh
گام سوم: اتصال به سرور با کلیدهای SSH
اگر یکی از مراحل بالا را با موفقیت انجام داده باشید، میتوانید بدون رمز عبور به سرورتان متصل شوید:
ssh username@IP
اگر این اولین بار است که به این سرور متصل میشوید، ممکن است خروجیای شبیه به این مشاهده کنید:
The authenticity of host '1.2.3.4 (1.2.3.4)' 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 را فشار دهید.
اگر برای کلید خصوصیتان Passphrase تعیین نکرده باشید وارد سرور میشوید، اما اگر کلید Passphrase داشته باشد از شما خواسته میشود که آن را وارد کنید.
گام چهارم: غیرفعال کردن SSH با رمز
اگر توانستید با استفاده از SSH، بدون رمز عبور وارد سرور شوید، احراز هویت مبتنی بر کلید SSH را با موفقیت در سرورتان پیکربندی کردهاید. با این حال، سازوکار احراز هویت با رمز عبور هنوز فعال است، به این معنا که سرور شما همچنان در معرض حملات brute-force قرار دارد.
قبل از تکمیل مراحل این بخش، مطمین شوید که مراحل قبل را بهدرستی پیکربندی کردهاید و امکان دسترسی با کلید SSH به سرور را دارید. اگر این تنظیمات بهدرستی انجام نشده باشد، دسترسی به سرورتان را از دست خواهید داد.
با یک کاربر با دسترسی sudo یا با کاربر root وارد سرور شوید و فایل تنظیمات SSH را باز کنید:
sudo nano /etc/ssh/sshd_config
داخل فایل، خطی که با PasswordAuthentication
شروع میشود را پیدا کنید. این خط ممکن است با علامت # شروع شود. این علامت را حذف کنید و مقدار آن را به no تغییر دهید:
PasswordAuthentication no
فایل را ذخیره کرده و ببندید.
برای فعال کردن این تغییرات، سرویس sshd
را دوباره راهاندازی کنید:
sudo systemctl restart ssh
برای اطمینان، یک ترمینال جدید باز کنید و قبل از بستن Session فعلی خود بررسی کنید که سرویس SSH به درستی کار میکند:
ssh username@IP
اگر ارتباط با سرور برقرار شد، میتوانید Sessionتان را ببندید و از این پس با کلید به سرور خود متصل شوید.