SSH Key یکی از امنترین روشها برای ورود به سرورهای لینوکسی است. بهجای اینکه برای هر اتصال رمز عبور وارد کنید، میتوانید از یک جفت کلید رمزنگاریشده شامل Private Key و Public Key استفاده کنید.
در این روش، کلید خصوصی روی سیستم شما باقی میماند و کلید عمومی روی سرور قرار میگیرد. هنگام اتصال، سرور بررسی میکند که آیا کلید خصوصی شما با کلید عمومی ذخیرهشده مطابقت دارد یا خیر.
استفاده از SSH Key علاوه بر راحتتر کردن اتصال، امنیت سرور را نیز افزایش میدهد و میتواند در کنار Fail2Ban، Firewall و غیرفعال کردن ورود با Password استفاده شود.
SSH Key چیست؟
SSH Key از دو بخش تشکیل شده است:
- Private Key: کلید خصوصی که فقط باید روی سیستم شما باقی بماند.
- Public Key: کلید عمومی که روی سرور مقصد قرار میگیرد.
کلید خصوصی را نباید برای شخص دیگری ارسال کنید. هر فردی که به Private Key شما دسترسی داشته باشد، در صورت نبود محافظتهای دیگر ممکن است بتواند به سرور متصل شود.
مزایای استفاده از SSH Key
استفاده از SSH Key مزایای مهمی دارد:
- افزایش امنیت ورود به سرور
- حذف نیاز به وارد کردن رمز در هر اتصال
- کاهش خطر حملات Brute Force روی Password
- مناسب برای مدیریت چندین سرور
- مناسب برای اسکریپتها و Automation
- امکان غیرفعال کردن ورود با Password
مرحله اول: ساخت SSH Key
روی سیستم شخصی خود دستور زیر را اجرا کنید:
ssh-keygen
بعد از اجرای دستور، از شما مسیر ذخیره کلید پرسیده میشود:
Enter file in which to save the key:
برای استفاده از مسیر پیشفرض کافی است Enter بزنید.
معمولاً کلیدها در مسیر زیر ذخیره میشوند:
~/.ssh/
ساخت SSH Key با الگوریتم Ed25519
برای سیستمهای جدید بهتر است از Ed25519 استفاده کنید:
ssh-keygen -t ed25519
در هنگام ساخت کلید ممکن است از شما Passphrase خواسته شود:
Enter passphrase:
استفاده از Passphrase اختیاری است، اما امنیت Private Key را افزایش میدهد.
فایلهای ایجادشده
بعد از ساخت کلید معمولاً دو فایل ایجاد میشود:
~/.ssh/id_ed25519
~/.ssh/id_ed25519.pub
فایل زیر Private Key است:
id_ed25519
و فایل زیر Public Key است:
id_ed25519.pub
Private Key را در اختیار دیگران قرار ندهید.
مشاهده Public Key
برای مشاهده کلید عمومی:
cat ~/.ssh/id_ed25519.pub
خروجی مشابه زیر خواهد بود:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... user@computer
این همان کلیدی است که باید روی سرور قرار گیرد.
مرحله دوم: انتقال Public Key به سرور
سادهترین روش استفاده از دستور ssh-copy-id است:
ssh-copy-id root@SERVER_IP
برای مثال:
ssh-copy-id root@192.0.2.10
رمز عبور سرور را وارد کنید.
پس از موفقیت، Public Key داخل فایل authorized_keys کاربر مقصد اضافه میشود.
اگر پورت SSH تغییر کرده باشد
اگر SSH روی پورت دیگری مانند 2222 اجرا میشود:
ssh-copy-id -p 2222 root@SERVER_IP
برای مثال:
ssh-copy-id -p 2222 root@192.0.2.10
مرحله سوم: اتصال بدون Password
بعد از انتقال Public Key، اتصال را تست کنید:
ssh root@SERVER_IP
اگر پورت تغییر کرده است:
ssh -p 2222 root@SERVER_IP
اگر همهچیز درست باشد، دیگر Password حساب کاربری سرور از شما درخواست نمیشود.
اگر روی Private Key خود Passphrase تعیین کرده باشید، ممکن است Passphrase کلید درخواست شود.
اضافه کردن SSH Key بهصورت دستی
اگر ssh-copy-id روی سیستم شما وجود ندارد، میتوانید کلید را دستی اضافه کنید.
ابتدا Public Key را روی سیستم خود مشاهده کنید:
cat ~/.ssh/id_ed25519.pub
سپس وارد سرور شوید و پوشه .ssh را ایجاد کنید:
mkdir -p ~/.ssh
فایل زیر را باز کنید:
nano ~/.ssh/authorized_keys
Public Key را داخل فایل قرار دهید و ذخیره کنید.
تنظیم Permissionهای SSH
Permissionهای اشتباه میتوانند باعث شوند SSH Key کار نکند.
روی سرور اجرا کنید:
chmod 700 ~/.ssh
سپس:
chmod 600 ~/.ssh/authorized_keys
در صورت نیاز مالکیت را نیز بررسی کنید:
chown -R $USER:$USER ~/.ssh
بررسی اتصال با SSH Key
برای مشاهده جزئیات فرآیند اتصال میتوانید از حالت Verbose استفاده کنید:
ssh -v root@SERVER_IP
اگر پورت SSH تغییر کرده:
ssh -v -p 2222 root@SERVER_IP
این خروجی میتواند برای عیبیابی بسیار مفید باشد.
استفاده از کلید با نام سفارشی
میتوانید هنگام ساخت SSH Key نام دلخواه تعیین کنید:
ssh-keygen -t ed25519 -f ~/.ssh/dyarhost-server
در این حالت دو فایل ایجاد میشوند:
~/.ssh/dyarhost-server
~/.ssh/dyarhost-server.pub
برای اتصال با این کلید:
ssh -i ~/.ssh/dyarhost-server root@SERVER_IP
ذخیره تنظیمات در SSH Config
اگر مرتباً به یک سرور متصل میشوید، میتوانید تنظیمات آن را در فایل SSH Config ذخیره کنید.
فایل زیر را باز کنید:
nano ~/.ssh/config
برای مثال:
Host myserver
HostName 192.0.2.10
User root
Port 2222
IdentityFile ~/.ssh/dyarhost-server
سپس Permission فایل را تنظیم کنید:
chmod 600 ~/.ssh/config
از این پس کافی است اجرا کنید:
ssh myserver
و نیازی به وارد کردن IP، Port و مسیر کلید در هر بار اتصال ندارید.
استفاده از ssh-agent
اگر Private Key دارای Passphrase است، میتوانید از ssh-agent استفاده کنید تا مجبور نباشید در هر اتصال Passphrase را وارد کنید.
ابتدا:
eval "$(ssh-agent -s)"
سپس کلید را اضافه کنید:
ssh-add ~/.ssh/id_ed25519
اگر کلید سفارشی دارید:
ssh-add ~/.ssh/dyarhost-server
غیرفعال کردن ورود با Password
بعد از اینکه مطمئن شدید SSH Key بهدرستی کار میکند، میتوانید ورود با Password را غیرفعال کنید.
فایل تنظیمات SSH را باز کنید:
nano /etc/ssh/sshd_config
مقدار زیر را پیدا کنید:
PasswordAuthentication yes
و آن را به شکل زیر تغییر دهید:
PasswordAuthentication no
در برخی سیستمها تنظیمات SSH ممکن است داخل مسیر زیر هم قرار داشته باشند:
/etc/ssh/sshd_config.d/
بعد از تغییر، صحت تنظیمات را بررسی کنید:
sshd -t
اگر خطایی دریافت نکردید، سرویس SSH را Restart کنید.
در Ubuntu و Debian:
systemctl restart ssh
در AlmaLinux و Rocky Linux:
systemctl restart sshd
نکته بسیار مهم قبل از غیرفعال کردن Password
قبل از غیرفعال کردن ورود با Password، حتماً یک Terminal جدید باز کنید و اتصال با SSH Key را تست کنید.
تا زمانی که مطمئن نشدهاید ورود با Key بهدرستی کار میکند، Session فعلی SSH را نبندید.
در غیر این صورت ممکن است دسترسی خود را به سرور از دست بدهید.
غیرفعال کردن ورود مستقیم Root
برای امنیت بیشتر میتوانید ورود مستقیم Root را نیز محدود کنید.
در فایل:
لینک مستقیم مقاله
https://dyarhost.com/blog/آموزش-ساخت-ssh-key-و-اتصال-به-سرور-بدون-پسورد
