اَبرِ دیجیتال، مرکز تخصصی ارائه سرویس های ابری، سرور مجازی/اختصاصی، هاست و دامنه

اَبرِ دیجیتال، مرکز تخصصی ارائه سرویس های ابری

دریافت مشاوره رایگان

راه‌اندازی و استفاده از کلیدهای SSH در Ubuntu 22.04

 مقدمه

کلیدهای SSH یک روش احراز هویت رمزنگاری‌شده‌اند که به‌جای رمز عبور، از یک جفت کلید عمومی/خصوصی استفاده می‌کنند. این روش امنیت اتصال به سرور را افزایش می‌دهد، حملات حدس رمز عبور را حذف می‌کند و امکان اتصالات خودکار و کم‌خطر را فراهم می‌سازد. در این راهنما گام‌به‌گام از ایجاد کلید تا پیکربندی سرور و کلاینت، محافظت بیشتر، و رفع اشکال آورده شده است.

 

 پیش‌نیازها

– دسترسی به ترمینال در سیستم محلی (لپ‌تاپ/کامپیوتر).

– دسترسی sudo یا root روی سرور اوبونتو 22.04 (یا حساب کاربری با مجوز sudo).

– آدرس IP یا نام دامنه سرور.

– اتصال اینترنت.

 

Working-of-RSA-Algorithm

 

 گام 1 — بروزرسانی سیستم

– دستور:

sudo apt update && sudo apt upgrade -y

 

 

 گام 2 — نصب OpenSSH (در صورت عدم نصب)

– نصب بستهٔ OpenSSH server و client:

sudo apt install -y openssh-server openssh-client

 

– فعال‌سازی و راه‌اندازی سرویس SSH:

sudo systemctl enable --now ssh

 

– بررسی وضعیت سرویس:

sudo systemctl status ssh

 

 

 گام 3 — ساخت جفت کلید SSH روی ماشین محلی

– ساخت کلید RSA 4096 بیتی (یا از الگوریتم ایمن دیگر مثل ed25519 استفاده کنید):

ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f ~/.ssh/id_rsa

 

– اگر می‌خواهید کلید بدون رمز عبور برای اتصالات خودکار باشد، Enter را برای passphrase بزنید؛ اما توصیه می‌شود رمز عبور قوی تعیین کنید.

– یا ساخت کلید ed25519 (کوچک‌تر و امن‌تر در اغلب موارد):

ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/id_ed25519

 

 

 گام 4 — منتقل کردن کلید عمومی به سرور

– ساده‌ترین روش با ssh-copy-id:

ssh-copy-id -i ~/.ssh/id_rsa.pub username@SERVER_IP

 

– اگر پورت SSH سرور تغییر کرده یا نام فایل کلید متفاوت است:

ssh-copy-id -i ~/.ssh/mykey.pub -p PORT username@SERVER_IP

 

– روش دستی (درصورتی که ssh-copy-id در دسترس نیست):

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

 

 

گام 5 — تست ورود با کلید

– اتصال با کلید پیش‌فرض:

ssh username@SERVER_IP

 

– اتصال با مشخص‌کردن کلید و پورت در صورت نیاز:

ssh -i ~/.ssh/mykey -p PORT username@SERVER_IP

 

 

گام 6 — پیکربندی SSHD روی سرور (بهینه‌سازی امنیت)

– باز کردن فایل پیکربندی:

sudo nano /etc/ssh/sshd_config

 

– تغییرات پیشنهادی (در خطوط جدا، مطابق وضعیت خود اعمال کنید):

– تغییر پورت پیش‌فرض (اختیاری برای کاهش نویز حملات):

Port 2222

– غیرفعال‌سازی ورود با رمز عبور (پس از اطمینان از کارکرد کلیدها):

PasswordAuthentication no

– غیرفعال‌سازی ورود روت (قویاً توصیه می‌شود):

PermitRootLogin no

– محدود کردن الگوریتم‌ها و نسخه‌ها (پیش‌فرض معمولاً مناسب است، تغییر تنها اگر نیاز دارید):

Ciphers, KexAlgorithms و MACs را فقط در صورت نیاز و با دقت تغییر دهید

– اجازه به کاربران یا گروه‌های خاص (اختیاری):

AllowUsers username anotheruser

– پس از ویرایش، ذخیره و راه‌اندازی مجدد سرویس:

sudo systemctl restart ssh

 

– بررسی وضعیت و اینکه ssh به پورت جدید گوش می‌دهد:

sudo ss -tlpn | grep ssh

 

 

گام 7 — ایجاد کاربر غیر روت و اعطای دسترسی sudo (اگر لازم است)

– ایجاد کاربر جدید و افزودن به گروه sudo:

sudo adduser newuser
sudo usermod -aG sudo newuser

 

– انتقال کلید عمومی به کاربر جدید (از روی سرور یا با ssh-copy-id):

sudo mkdir -p /home/newuser/.ssh && sudo chmod 700 /home/newuser/.ssh
sudo sh -c 'cat /home/youruser/.ssh/authorized_keys >> /home/newuser/.ssh/authorized_keys'
sudo chown -R newuser:newuser /home/newuser/.ssh && sudo chmod 600 /home/newuser/.ssh/authorized_keys

 

 

(در حالت بهتر، از ssh-copy-id از ماشین محلی به newuser استفاده کنید:

ssh-copy-id -i ~/.ssh/id_rsa.pub newuser@SERVER_IP

 

 

گام 8 — پیکربندی فایروال (UFW)

– فعال‌سازی UFW و اجازه SSH (پورت پیش‌فرض 22 یا پورت سفارشی):

sudo ufw allow ssh

 

یا برای پورت سفارشی:

sudo ufw allow 2222/tcp

 

– فعال‌کردن UFW:

sudo ufw enable

 

– بررسی وضعیت UFW:

sudo ufw status

 

 

گام 9 — مدیریت کلیدها و پیکربندی کلاینت

– فایل پیکربندی SSH کلاینت (~/.ssh/config) برای آسان‌تر شدن اتصال:

Host myserver
HostName SERVER_IP
User username
Port 2222
IdentityFile ~/.ssh/id_rsa

 

– افزودن کلید به ssh-agent برای مدیریت رمز عبور (در صورت استفاده از passphrase):

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa

 

– لیست کلیدهای اضافه‌شده:

ssh-add -l

 

 

گام 10 — غیرفعال‌سازی ورود با رمز پس از اطمینان

– مطمئن شوید می‌توانید با کلید وارد شوید. سپس در /etc/ssh/sshd_config:

PasswordAuthentication no
ChallengeResponseAuthentication no

 

– ری‌استارت sshd:

sudo systemctl restart ssh

 

 

گام 11 — افزودن چندین کلید یا کلیدها برای کاربران متعدد

– اضافه کردن چندین کلید به authorized_keys (هر خط یک کلید):

echo "ssh-rsa AAAA... user@host" >> ~/.ssh/authorized_keys

 

– اطمینان از مجوزها:

chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys

 

 

گام 12 — استفاده از کلیدهای SSH در سرویس‌های ابری 

– هنگام ساخت droplet می‌توانید کلید عمومی را در پنل وارد کنید تا هنگام ایجاد سرویس، کاربر پیش‌فرض دارای کلید شود.

– اگر قبلاً سرور ایجاد شده، کلید را به authorized_keys کاربر اضافه کنید (روش‌های بالا).

 

گام 13 — نکات امنیتی و بهترین شیوه‌ها

– از کلیدهای ed25519 یا RSA 4096 استفاده کنید؛ RSA کمتر از 2048 مناسب نیست.

– برای هر دستگاه یک جفت کلید مجزا بسازید؛ از اشتراک‌گذاری کلید خصوصی خودداری کنید.

– کلید خصوصی را با chmod 600 محافظت کنید:

chmod 600 ~/.ssh/id_rsa

 

– اگر از passphrase استفاده می‌کنید، ssh-agent را برای مدیریت رمز استفاده کنید.

– به‌روزرسانی منظم پکیج‌ها و سرویس‌های SSH را فراموش نکنید.

– تغییر پورت SSH تنها یک لایه پنهان‌سازی است؛ به‌تنهایی امنیت کافی ایجاد نمی‌کند.

– برای دسترسی‌های حساس از راهکارهایی مثل fail2ban، MFA روی پنل مدیریت و محدودسازی IP استفاده کنید.

 

گام 14 — ابزارهای کمکی و رفع اشکال

– برای مشاهده لاگ‌های ورود SSH:

sudo journalctl -u ssh -e

 

یا

sudo tail -n 200 /var/log/auth.log

 

– خطاهای معمول و راه‌حل‌ها:

– خطای Permission denied (publickey): از صحت کلید عمومی در server:~/.ssh/authorized_keys و مجوزها مطمئن شوید.

– Too many authentication failures: در هنگام اتصال از گزینه IdentitiesOnly=yes استفاده کنید:

ssh -o IdentitiesOnly=yes -i ~/.ssh/id_rsa username@SERVER_IP

 

– تغییر پورت و فراموش کردن آن: بررسی پورت با دستور ss یا netstat روی سرور.

 

گام 15 — نمونهٔ کامل جریان کاری (دستورات قابل اجرا، مرحله‌به‌مرحله)

1) بروزرسانی سیستم:

sudo apt update && sudo apt upgrade -y

 

2) نصب OpenSSH server:

sudo apt install -y openssh-server

 

3) فعال‌سازی SSH:

sudo systemctl enable --now ssh

 

4) ساخت کلید (ed25519 پیشنهاد می‌شود):

ssh-keygen -t ed25519 -C "you@example.com" -f ~/.ssh/id_ed25519

 

5) انتقال کلید عمومی به سرور (پورت پیش‌فرض 22):

ssh-copy-id -i ~/.ssh/id_ed25519.pub username@SERVER_IP

 

6) (اختیاری) اضافه کردن کاربر جدید و مجوز sudo:

sudo adduser newuser
sudo usermod -aG sudo newuser

 

7) (اختیاری) پیکربندی پورت سفارشی و غیرفعال‌سازی ورود روت:

sudo sed -i 's/Port 22/Port 2222/' /etc/ssh/sshd_config
sudo sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
sudo sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo systemctl restart ssh

 

8) پیکربندی فایروال برای پورت جدید:

sudo ufw allow 2222/tcp
sudo ufw enable

 

9) پیکربندی کلاینت برای دسترسی آسان:

printf "Host myserver\n  HostName SERVER_IP\n  User username\n  Port 2222\n  IdentityFile ~/.ssh/id_ed25519\n" >> ~/.ssh/config

 

10) تست اتصال:

ssh myserver

 

 

جمع‌بندی کوتاه

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

– نگهداری صحیح کلید خصوصی و مدیریت مجوزها (chmod) حیاتی است.

– همیشه قبل از تغییرات امنیتی دسترسی، راه ورود جایگزین (کلید معتبر) را تست کنید تا از قفل شدن خارج جلوگیری شود.

 

4.8/5 - (3066 امتیاز)

ارسال دیدگاه

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


10 + 20

قوانین

قوانین ارسال دیدگاه

لطفاً در ارسال دیدگاه از کلمات مناسب استفاده کنید. ارسال اسپم ممنوع است.