بیایید رو راست باشیم، هر بار که میخوایم به سرور وصل شیم و پسورد وارد کنیم، یه بخش از روحمون میمیره! اما نگران نباش، این مقاله دقیقاً برای توئه که میخوای یه بار برای همیشه از شر این دردسر خلاص بشی و با SSH Keyهای ed25519، هم امنتر باشی و هم سریعتر. آمادهای؟ بزن بریم!
چرا اصلاً SSH Key؟ خداحافظی با پسورد:
خب رفیق، بیا یه لحظه فکر کنیم. چند بار تا حالا شده که برای وصل شدن به سرور، مجبور شدی یه پسورد طولانی و پیچیده رو تایپ کنی؟ یا بدتر از اون، پسورد رو جایی ذخیره کردی که نباید؟ اینجاست که SSH Key وارد گود میشه و مثل یه قهرمان، نجاتت میده!

SSH Keyها یه جفت کلید رمزنگاری شده هستن: یکی عمومی (public) و یکی خصوصی (private). کلید عمومی رو میذاری روی سرور، و کلید خصوصی رو نگه میداری پیش خودت. وقتی میخوای وصل بشی، این دو تا کلید با هم حرف میزنن و هویت تو رو تأیید میکنن. بدون نیاز به پسورد! خیلی باحال نیست؟
ed25519 چیه و چرا بهترین انتخابه؟
شاید اسم RSA به گوشت خورده باشه، یه الگوریتم قدیمیتر برای ساخت SSH Key. اما الان دیگه دوران ed25519 رسیده! این الگوریتم جدیدتر، امنتر، و سریعتره. سایز کلیدهاش هم کوچیکتره که یعنی هم سریعتر پردازش میشن و هم کمتر فضای دیسک اشغال میکنن.
تصور کن یه قفل فوقالعاده محکم داری که باز کردنش برای هکرها کابوسه، در عین حال خودت با یه کلید کوچیک و سریع بازش میکنی. ed25519 دقیقاً همینه! پس اگه میخوای کارت رو اصولی انجام بدی، حتماً از این نوع کلید استفاده کن.
نکته طلایی: همیشه از ed25519 استفاده کن! امنیت بالاتر و عملکرد بهتر، دلایل کافی برای این انتخاب هستن. دیگه سراغ RSA نرو، مگر اینکه مجبور باشی.
ساخت SSH Key با ssh-keygen: گام به گام تا موفقیت:
خب، رسیدیم به بخش هیجانانگیز! برای ساخت کلید، ترمینال رو باز کن و این دستور رو وارد کن:

```bash ssh-keygen -t ed25519 -C "your_email@example.com" ```
- `-t ed25519`: این بخش میگه که ما میخوایم کلید از نوع ed25519 باشه.
- `-C "your_email@example.com"`: این یه کامنت برای کلیدته. میتونی ایمیلت رو بذاری یا هر چیزی که بهت کمک کنه کلید رو شناسایی کنی. خیلی مهمه که یه کامنت معنیدار بذاری، مخصوصاً اگه چند تا کلید داری.
- بعد از زدن Enter، ازت میپرسه که کلید رو کجا ذخیره کنه. مسیر پیشفرض (معمولاً `~/.ssh/id_ed25519`) خوبه، فقط Enter بزن.
- حالا ازت یه passphrase میخواد. این مثل یه پسورد برای کلید خصوصیت عمل میکنه و یه لایه امنیتی اضافه است. حتماً یه passphrase قوی انتخاب کن و یادت نره! اگه نمیخوای، میتونی خالی بذاری، ولی توصیه نمیشه.
- بعد از تکرار passphrase، کلیدهای تو ساخته میشن! تبریک میگم، تو الان یه جفت SSH Key داری.
کلید عمومی رو روی سرور بذار: راه اتصال:
حالا که کلیدها رو ساختی، باید کلید عمومی رو روی سرور مقصدت کپی کنی. سادهترین راه استفاده از `ssh-copy-id` هست:
```bash ssh-copy-id user@your_server_ip ```
به جای `user` نام کاربری سرور و به جای `your_server_ip` آدرس IP یا دامنه سرور رو وارد کن. این دستور کلید عمومی تو رو به فایل `~/.ssh/authorized_keys` روی سرور اضافه میکنه. اگه این دستور رو نداری یا کار نکرد، میتونی دستی این کار رو انجام بدی. اول کلید عمومی رو نمایش بده:
```bash cat ~/.ssh/id_ed25519.pub ```
محتوای خروجی رو کپی کن و با `ssh user@your_server_ip` به سرور وصل شو (با پسورد). بعد فایل `~/.ssh/authorized_keys` رو با یه ویرایشگر مثل `nano` یا `vim` باز کن و کلید کپی شده رو به یه خط جدید اضافه کن. اگه این فایل وجود نداره، بسازش و مجوزهاش رو درست کن (راهنمای تنظیم مجوزها). یادت نره مجوزهای فایل `authorized_keys` باید `600` باشن و دایرکتوری `~/.ssh` باید `700` باشه.

مدیریت کلیدها با ssh-agent: راحتی و امنیت:
هر بار که میخوای از SSH Key استفاده کنی، وارد کردن passphrase میتونه خستهکننده باشه. اینجا `ssh-agent` به کمکت میاد! `ssh-agent` یه برنامه کوچیکه که کلیدهای خصوصی تو رو در حافظه نگه میداره و passphrase رو فقط یک بار ازت میپرسه.
برای شروع `ssh-agent` (اگه خودش اتوماتیک شروع نشده باشه) و اضافه کردن کلیدت، این دستورات رو بزن:
```bash eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed25519 ```
با `ssh-add` کلیدت به `ssh-agent` اضافه میشه و از این به بعد، تا وقتی که سیستم رو ریاستارت نکنی یا `ssh-agent` رو نبندی، دیگه نیازی به وارد کردن passphrase نداری. برای دیدن کلیدهای اضافه شده هم میتونی از `ssh-add -l` استفاده کنی.
نکته طلایی: برای اینکه `ssh-agent` با هر بار راهاندازی سیستم عاملت اتوماتیک شروع به کار کنه، میتونی دستورات `eval "$(ssh-agent -s)"` و `ssh-add` رو به فایل `~/.bashrc` یا `~/.zshrc` اضافه کنی. اینجوری دیگه هیچ وقت فراموش نمیکنی!
نکات امنیتی و بهترین روشها: همیشه یک قدم جلوتر باش:
ساخت SSH Key فقط قدم اوله. برای اینکه واقعاً امن باشی، باید چند تا نکته رو رعایت کنی. اول از همه، کلید خصوصی تو مثل مسواکته، به هیچ کس نده! این کلید باید فقط روی سیستمی باشه که خودت بهش اعتماد داری.
دوم اینکه، حتماً برای کلید خصوصیت یه passphrase قوی بذار. این passphrase یه لایه امنیتی اضافه است که حتی اگه کلید خصوصیت به دست کسی افتاد، نتونه ازش استفاده کنه. سوم، دسترسی به فایلهای کلید رو محدود کن. فایل `id_ed25519` باید مجوز `600` داشته باشه و `id_ed25519.pub` میتونه `644` باشه. دایرکتوری `~/.ssh` هم باید `700` باشه. میتونی با `chmod` این مجوزها رو تنظیم کنی.
چهارم، همیشه SSH رو روی سرور کانفیگ کن که فقط با SSH Key احراز هویت کنه و پسورد رو غیرفعال کن. این کار امنیت سرور رو به شدت بالا میبره. برای این کار باید فایل `/etc/ssh/sshd_config` رو ویرایش کنی و `PasswordAuthentication no` رو تنظیم کنی. بعد سرویس SSH رو ریاستارت کن. برای اطلاعات بیشتر در مورد امنیت سرور، میتونی به مقالات DevOps ما سر بزنی. همچنین، میتونی اطلاعات بیشتری در مورد SSH و پیکربندی آن در مستندات رسمی OpenSSH اینجا پیدا کنی.
آیا میتوانم برای چندین سرور از یک SSH Key استفاده کنم؟
بله، میتوانی از یک جفت SSH Key (خصوصی و عمومی) برای اتصال به چندین سرور استفاده کنی. فقط کافیه کلید عمومی رو روی تمام سرورهایی که میخوای بهشون وصل بشی، کپی کنی.
اگر passphrase کلید SSH خود را فراموش کنم چه اتفاقی میافتد؟
اگر passphrase را فراموش کنی، نمیتوانی از کلید خصوصیت استفاده کنی. در این صورت، باید یک جفت کلید جدید بسازی و کلید عمومی جدید را روی سرورهایت کپی کنی.
چگونه SSH Keyهای موجودم را لیست کنم؟
برای لیست کردن کلیدهای SSH که در حال حاضر توسط `ssh-agent` مدیریت میشوند، میتوانی از دستور `ssh-add -l` استفاده کنی. این دستور اثر انگشت (fingerprint) و کامنت کلیدها را نمایش میدهد.
آیا ed25519 با همه سرورها سازگار است؟
تقریباً بله. ed25519 در اکثر توزیعهای لینوکس مدرن و نسخههای جدید OpenSSH پشتیبانی میشود. اگر سرور خیلی قدیمی باشد، ممکن است نیاز به بهروزرسانی OpenSSH داشته باشد یا مجبور به استفاده از RSA شوی، اما این موارد نادر هستند.
هنوز نظری ثبت نشده. اولین نفر باشید.