راهاندازی و استفاده از کلیدهای SSH در Ubuntu 22.04
مقدمه
کلیدهای SSH یک روش احراز هویت رمزنگاریشدهاند که بهجای رمز عبور، از یک جفت کلید عمومی/خصوصی استفاده میکنند. این روش امنیت اتصال به سرور را افزایش میدهد، حملات حدس رمز عبور را حذف میکند و امکان اتصالات خودکار و کمخطر را فراهم میسازد. در این راهنما گامبهگام از ایجاد کلید تا پیکربندی سرور و کلاینت، محافظت بیشتر، و رفع اشکال آورده شده است.
پیشنیازها
– دسترسی به ترمینال در سیستم محلی (لپتاپ/کامپیوتر).
– دسترسی sudo یا root روی سرور اوبونتو 22.04 (یا حساب کاربری با مجوز sudo).
– آدرس IP یا نام دامنه سرور.
– اتصال اینترنت.

گام 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) حیاتی است.
– همیشه قبل از تغییرات امنیتی دسترسی، راه ورود جایگزین (کلید معتبر) را تست کنید تا از قفل شدن خارج جلوگیری شود.





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