آموزش ساخت SSH Key و اتصال به سرور بدون پسورد پرینت

  • آموزش ساخت SSH Key, آموزش ساخت SSH Key و اتصال, آموزش ساخت SSH Key و اتصال به سرور, آموزش ساخت SSH Key و اتصال به سرور بدون پسورد, ساخت SSH Key و اتصال به سرور بدون پسورد
  • 0

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 را نیز محدود کنید.

در فایل:

 

آیا این پاسخ به شما کمک کرد؟

« برگشت