SSH یک پروتکل رمزگذاری‌شده برای مدیریت و برقراری ارتباط با سرورهاست. هنگام کار با یک سرور لینوکس، بیش‌تر زمان شما در یک ترمینال که از طریق SSH به سرور متصل است، می‌گذرد. کلیدهای 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تان را ببندید و از این پس با کلید به سرور خود متصل شوید.