ssh-keygen ابزار رسمی OpenSSH برای تولید، مدیریت و تبدیل کلیدهای احراز هویت SSH است. طبق manpage اوبونتو Noble (بستهٔ openssh-client ۹٫۶)، اگر بدون آرگومان اجرا شود یک کلید Ed25519 می‌سازد. مدل کلیدعمومی راز را روی کلاینت نگه می‌دارد و فقط مادهٔ عمومی را روی سرور پخش می‌کند.

پیش‌نیازها و نقش‌ها

  • کلاینت: رایانه‌ای که با آن به سرور وصل می‌شوید؛ کلید خصوصی اینجا می‌ماند.
  • سرور: مقصد SSH؛ فقط کلید عمومی در ~/.ssh/authorized_keys اضافه می‌شود.
  • هرگز: فایل خصوصی را به سرور، چت یا مخزن گیت کپی نکنید.

ساخت کلید روی کلاینت

آموزش کلید SSH در لینوکس؛ ssh-keygen و ورود با authorized_keys
آموزش کلید SSH در لینوکس؛ ssh-keygen و ورود با authorized_keys
  1. ترمینال را باز کنید و یکی از این دو را اجرا کنید:

ssh-keygen

یا با نوع و توضیح صریح:

ssh-keygen -t ed25519 -C comment

  1. مسیر ذخیرهٔ کلید خصوصی را تأیید کنید؛ معمولاً ~/.ssh/id_ed25519 (کلید عمومی با پسوند .pub کنار آن ساخته می‌شود).
  2. عبارت عبور (passphrase) را وارد کنید. می‌تواند خالی باشد — برای کلید میزبان باید خالی باشد — یا رشته‌ای با طول دلخواه. manpage عبارت خوب را حدود ۱۰ تا ۳۰ نویسه، ترکیبی از حروف بزرگ و کوچک، رقم و نویسهٔ غیرحرفی می‌داند.
  3. اثر انگشت را با فرمان زیر ببینید:

ssh-keygen -l

استخراج عمومی از خصوصی با -y و عوض‌کردن عبارت عبور با -p ممکن است. اگر عبارت گم شود بازیابی ممکن نیست؛ باید کلید تازه بسازید و عمومیِ جدید را روی ماشین‌های دیگر کپی کنید.

نوع کلید را با -t عوض می‌کنید: dsa، ecdsa، ecdsa-sk، ed25519، ed25519-sk و rsa. قالب پیش‌فرض نوشتن کلید، قالب خاص OpenSSH است که حفاظت در حالت سکون را بهتر می‌کند.

نصب کلید عمومی روی سرور (authorized_keys)

آموزش کلید SSH در لینوکس؛ ssh-keygen و ورود با authorized_keys
آموزش کلید SSH در لینوکس؛ ssh-keygen و ورود با authorized_keys
  1. روی کلاینت محتوای فایل .pub را بخوانید (یک خط است).
  2. همان یک خط را در ~/.ssh/authorized_keys حساب مقصد روی سرور اضافه کنید.
  3. ورود آزمایشی:

ssh user@server

بدون پرسیدن رمز حساب؛ اگر برای خود کلید عبارت عبور گذاشته‌اید، آن جداگانه از رمز حساب است.

  1. کلید خصوصی روی کلاینت بماند؛ فقط عمومی را روی سرور کپی کنید.

هنگام ورود، کلاینت مالکیت کلید خصوصی را ثابت می‌کند و سرور بررسی می‌کند کلید عمومی متناظر در authorized_keys مجاز است. می‌توانید چند کلید عمومی را خط‌به‌خط جمع کنید تا لپ‌تاپ، دسکتاپ و توکن جداگانه مجاز شوند.

شکست رایج — Permission denied: مجوز پوشهٔ .ssh و پروندهٔ authorized_keys را چک کنید و در صورت نیاز با ssh -v عیب‌یابی کنید — بدون افشای محتوای کلید خصوصی.

گونه‌های کلید و چند فرمان کمکی

آموزش کلید SSH در لینوکس؛ ssh-keygen و ورود با authorized_keys
آموزش کلید SSH در لینوکس؛ ssh-keygen و ورود با authorized_keys
  • گزینه‌های -sk برای اصالت‌سنج FIDO هستند و به ارائه‌دهنده (-w) نیاز دارند.
  • توضیح اولیه «user@host» است و با -c عوض می‌شود.
  • manpage می‌گوید ssh-keygen معمولاً یک‌بار برای هر کاربر اجرا می‌شود؛ ساخت کلید تازه برای هر میزبان لازم نیست مگر سیاست جداسازی کلیدها چنین بخواهد.

مرجع فرمان‌ها manpage رسمی ssh-keygen در اوبونتو Noble است. بیشتر Ed25519 می‌سازید یا هنوز RSA؟