ssh-keygen ابزار رسمی OpenSSH برای تولید، مدیریت و تبدیل کلیدهای احراز هویت SSH است. طبق manpage اوبونتو Noble (بستهٔ openssh-client ۹٫۶)، اگر بدون آرگومان اجرا شود یک کلید Ed25519 میسازد. مدل کلیدعمومی راز را روی کلاینت نگه میدارد و فقط مادهٔ عمومی را روی سرور پخش میکند.
پیشنیازها و نقشها
- کلاینت: رایانهای که با آن به سرور وصل میشوید؛ کلید خصوصی اینجا میماند.
- سرور: مقصد SSH؛ فقط کلید عمومی در ~/.ssh/authorized_keys اضافه میشود.
- هرگز: فایل خصوصی را به سرور، چت یا مخزن گیت کپی نکنید.
ساخت کلید روی کلاینت
- ترمینال را باز کنید و یکی از این دو را اجرا کنید:
ssh-keygen
یا با نوع و توضیح صریح:
ssh-keygen -t ed25519 -C comment
- مسیر ذخیرهٔ کلید خصوصی را تأیید کنید؛ معمولاً ~/.ssh/id_ed25519 (کلید عمومی با پسوند .pub کنار آن ساخته میشود).
- عبارت عبور (passphrase) را وارد کنید. میتواند خالی باشد — برای کلید میزبان باید خالی باشد — یا رشتهای با طول دلخواه. manpage عبارت خوب را حدود ۱۰ تا ۳۰ نویسه، ترکیبی از حروف بزرگ و کوچک، رقم و نویسهٔ غیرحرفی میداند.
- اثر انگشت را با فرمان زیر ببینید:
ssh-keygen -l
استخراج عمومی از خصوصی با -y و عوضکردن عبارت عبور با -p ممکن است. اگر عبارت گم شود بازیابی ممکن نیست؛ باید کلید تازه بسازید و عمومیِ جدید را روی ماشینهای دیگر کپی کنید.
نوع کلید را با -t عوض میکنید: dsa، ecdsa، ecdsa-sk، ed25519، ed25519-sk و rsa. قالب پیشفرض نوشتن کلید، قالب خاص OpenSSH است که حفاظت در حالت سکون را بهتر میکند.
نصب کلید عمومی روی سرور (authorized_keys)
- روی کلاینت محتوای فایل .pub را بخوانید (یک خط است).
- همان یک خط را در ~/.ssh/authorized_keys حساب مقصد روی سرور اضافه کنید.
- ورود آزمایشی:
ssh user@server
بدون پرسیدن رمز حساب؛ اگر برای خود کلید عبارت عبور گذاشتهاید، آن جداگانه از رمز حساب است.
- کلید خصوصی روی کلاینت بماند؛ فقط عمومی را روی سرور کپی کنید.
هنگام ورود، کلاینت مالکیت کلید خصوصی را ثابت میکند و سرور بررسی میکند کلید عمومی متناظر در authorized_keys مجاز است. میتوانید چند کلید عمومی را خطبهخط جمع کنید تا لپتاپ، دسکتاپ و توکن جداگانه مجاز شوند.
شکست رایج — Permission denied: مجوز پوشهٔ .ssh و پروندهٔ authorized_keys را چک کنید و در صورت نیاز با ssh -v عیبیابی کنید — بدون افشای محتوای کلید خصوصی.
گونههای کلید و چند فرمان کمکی
- گزینههای -sk برای اصالتسنج FIDO هستند و به ارائهدهنده (-w) نیاز دارند.
- توضیح اولیه «user@host» است و با -c عوض میشود.
- manpage میگوید ssh-keygen معمولاً یکبار برای هر کاربر اجرا میشود؛ ساخت کلید تازه برای هر میزبان لازم نیست مگر سیاست جداسازی کلیدها چنین بخواهد.
مرجع فرمانها manpage رسمی ssh-keygen در اوبونتو Noble است. بیشتر Ed25519 میسازید یا هنوز RSA؟