puttygen(1) PuTTY tool suite puttygen(1)

puttygen - ابزار تولید کلید عمومی برای ابزارهای PuTTY

puttygen ( keyfile | -t keytype [ -b bits ] [ --primes method ] [ -q ] )
         [ -C new-comment ] [ -P ] [ --reencrypt ]
         [ --certificate cert-file | --remove-certificate ]
         [ -O output-type | -l | -L | -p | --dump | --cert-info ]
            [ --ppk-param key=value,... | -E fptype ]
         [ -o output-file ]

دستور puttygen ابزاری برای تولید و دستکاری جفت‌کلیدهای عمومی و خصوصی SSH است. این ابزار بخشی از مجموعهٔ PuTTY است، هرچند می‌تواند با قالب‌های کلید مورد استفاده توسط برخی کلاینت‌های دیگر SSH نیز سازگار باشد و کار کند.

هنگامی که puttygen را اجرا می‌کنید، سه کار انجام می‌دهد. نخست، یا یک فایل کلید موجود را بارگذاری می‌کند (اگر keyfile را مشخص کرده باشید)، یا یک کلید جدید تولید می‌کند (اگر keytype را مشخص کرده باشید). سپس، به دلخواه تغییراتی در کلید ایجاد می‌کند (مانند تغییر توضیح یا عبارت عبور)؛ و در نهایت، کلید یا اطلاعاتی دربارهٔ کلید را در یک فایل خروجی می‌دهد.

هر سه فاز با گزینه‌های شرح داده‌شده در بخش بعدی کنترل می‌شوند.

در فاز نخست، puttygen کلیدی را بارگذاری یا تولید می‌کند. توجه داشته باشید که تولید کلید نیازمند داده‌های تصادفی است، که ممکن است باعث مکث puttygen شود؛ به‌ویژه اگر سیستم شما داده‌های تصادفی (انتروپی) چندانی در دسترس نداشته باشد، این مکث ممکن است مدتی طول بکشد.

گزینه‌های کنترل این فاز عبارتند از:

مشخص کردن فایل کلیدی که باید بارگذاری شود. (از «-» برای خواندن فایل کلید از ورودی استاندارد استفاده کنید.)

معمولاً این یک کلید خصوصی خواهد بود که می‌تواند در قالب کلید (استاندارد عملی) SSH-1، قالب کلید SSH-2 در PuTTY، یا یکی از دو قالب کلید خصوصی SSH-2 مورد استفاده توسط OpenSSH و پیاده‌سازی ssh.com باشد.

همچنین می‌توانید فایلی را مشخص کنید که تنها شامل یک کلید عمومی باشد. عملیاتی که می‌توانید انجام دهید به خروجی دادن قالب کلید عمومی دیگری (احتمالاً با حذف گواهی پیوست‌شده در ابتدا) یا اثر انگشت (fingerprint) محدود می‌شود. کلیدهای عمومی می‌توانند در قالب‌های RFC 4716 یا OpenSSH یا قالب استاندارد SSH-1 باشند.

مشخص کردن نوع کلید برای تولید. مقادیر پذیرفتنی در اینجا عبارتند از rsa، dsa، ecdsa، eddsa، ed25519، و ed448 (برای تولید کلیدهای SSH-2)، و rsa1 (برای تولید کلیدهای SSH-1).
مشخص کردن اندازهٔ کلید برای تولید، بر حسب بیت. مقدار پیش‌فرض برای کلیدهای rsa و dsa برابر با 2048 است.
روش تولید اعداد اول. مقادیر پذیرفتنی در اینجا عبارتند از probable (پیش‌فرض)، proven، و proven-even؛ روش‌های بعدی کُندتر هستند. (مترادف‌های گوناگونی نیز برای نام این روش‌ها پذیرفته می‌شود.)

روش «اعداد اول محتمل» (probable primes) ممکن است ناامن به نظر برسد، اما رایج‌ترین راهبرد تولید اعداد اول است. در تئوری این احتمال وجود دارد که تصادفاً عددی تولید شود که اول نباشد، اما نرم‌افزار به اندازه‌ای بررسی انجام می‌دهد که این احتمال بسیار ناچیز و نزدیک به صفر شود (کمتر از ۱ در 2^80 یا ۱ در 10^24). بنابراین در عمل، کسی چندان نگران آن نیست.

روش‌های دیگر باعث می‌شوند PuTTYgen از اعدادی استفاده کند که مطمئن است اول هستند، چرا که عدد خروجی را به همراه اثبات اول بودن آن تولید می‌کند. این کار نیاز به پردازش بیشتری دارد، اما آن خطر تئوری در روش احتمالی را از بین می‌برد.

اگر استاندارد امنیتی محلی خاصی دارید که این را می‌طلبد، یا اگر به استدلال احتمالی دربارهٔ ایمنی روش معمول اطمینان ندارید، می‌توانید از اعداد اول محتمل به اعداد اول اثبات‌شده تغییر حالت دهید.

هنگام تولید کلید RSA، اطمینان حاصل می‌کند که عوامل اولِ پیمانهٔ کلید، «اعداد اول قوی» (strong primes) باشند. عدد اول قوی عدد اولی است که طوری انتخاب شده که ساختار خاصی داشته باشد تا اِعمال برخی الگوریتم‌های فاکتورگیری دشوارتر شود؛ از این رو برخی استانداردهای امنیتی استفاده از آن‌ها را توصیه می‌کنند. با این حال، پیشرفته‌ترین الگوریتم‌های مدرن فاکتورگیری تحت تأثیر این موضوع قرار نمی‌گیرند، بنابراین فعال‌سازی این گزینه احتمالاً ارزشش را ندارد مگر آن‌که استاندارد محلی خاصی استفاده از آن را توصیه کرده باشد.
جلوگیری از نمایش روند پیشرفت هنگام تولید یک کلید جدید.
مشخص کردن نام یک فایل؛ خط اول از این فایل خوانده شده (با حذف نویسهٔ خط جدید انتهایی) و به عنوان عبارت عبور قبلی استفاده می‌شود. هشدار: اگر عبارت عبور مهم است، فایل باید روی یک سیستم‌فایل موقت ذخیره شود یا پس از استفاده، به‌صورت امن پاک‌سازی شود.
مشخص کردن دستگاهی که باید انتروپی از آن خوانده شود. به‌طور پیش‌فرض، puttygen از /dev/urandom استفاده می‌کند و در صورت نیاز به /dev/random بازمی‌گردد.

در فاز دوم، puttygen به دلخواه مشخصه‌های کلید بارگذاری‌شده یا تولیدشده را تغییر می‌دهد. گزینه‌های کنترل این بخش عبارتند از:

مشخص کردن یک رشتهٔ توضیح (comment) برای توصیف کلید. این رشته توسط PuTTY برای شناساندن کلید به شما استفاده خواهد شد (برای نمونه هنگام درخواست وارد کردن عبارت عبور، تا بدانید کدام عبارت عبور را تایپ کنید).
نشان می‌دهد که می‌خواهید عبارت عبور کلید را تغییر دهید. این کار هنگام تولید یک کلید جدید خودکار است، اما هنگام ویرایش یک کلید موجود چنین نیست.
افزودن یک گواهی به سبک OpenSSH به بخش عمومی کلید، به طوری که فایل خروجی شامل یک کلید عمومیِ دارای گواهی با همان کلید خصوصی باشد. اگر فایل ورودی از قبل دارای گواهی بود، با گواهی جدید جایگزین خواهد شد. (از «-» برای خواندن گواهی از ورودی استاندارد استفاده کنید.)
حذف هرگونه گواهی که بخشی از کلید بوده است، جهت بازیابی نسخهٔ بدون گواهی کلید پایه‌ای.
برای یک کلید خصوصی موجود که با یک عبارت عبور ذخیره شده است، رمزنگاری را بدون تغییر عبارت عبور تازه می‌کند.

این گزینه بیش از همه به همراه گزینهٔ --ppk-param برای تغییر برخی جنبه‌های قالب فایل کلید یا رمزنگاری آن کاربرد دارد.

هنگام ذخیرهٔ یک فایل PPK (نوع خروجی پیش‌فرض private برای کلیدهای SSH-2)، جزئیات قالب روی دیسک را تنظیم می‌کند.

مواردی که باید تغییر کنند به صورت مجموعه‌ای از جفت‌های key=value که با کاما جدا شده‌اند مشخص می‌شوند. شناسه‌های key عبارتند از:

نسخهٔ قالب PPK. مقادیر ممکن 3 (پیش‌فرض) و 2 هستند (که در برابر رمزگشایی با حملهٔ جستجوی فراگیر مقاومت کمتری دارد، اما اگر کلید شما باید در نسخه‌های قدیمی ابزارهای PuTTY یا سایر برنامه‌های استفاده‌کننده از PPK به کار رود، ممکن است به آن نیاز داشته باشید).

شناسه‌های key زیر تنها روی فایل‌های نسخهٔ ۳ قالب PPK تأثیر می‌گذارند.

گونهٔ تابع اشتقاق کلید Argon2 برای استفاده. گزینه‌ها عبارتند از argon2id (پیش‌فرض و توصیه‌شده)، argon2i، و argon2d.

اگر احتمال قرار گرفتن خود در معرض حملات کانال جانبی را متفاوت از حالت معمول ارزیابی می‌کنید، ممکن است بخواهید این گزینه را تغییر دهید.

میزان حافظهٔ مورد نیاز برای رمزگشایی کلید، بر حسب کیلوبایت. مقدار پیش‌فرض 8192 (یعنی ۸ مگابایت) است.
زمان تقریبی مورد نیاز روی این رایانه برای اقدام به رمزگشایی کلید، بر حسب میلی‌ثانیه. مقدار پیش‌فرض 100 (میلی‌ثانیه) است.
جایگزینی برای time: صریحاً تعداد مراحل درهم‌سازی مورد نیاز برای تلاش جهت رمزگشایی کلید را مشخص می‌کند.
تعداد ریسه‌های موازی که می‌توانند برای رمزگشایی کلید استفاده شوند. مقدار پیش‌فرض 1 است (رمزگشایی را وادار به اجرا به صورت تک‌ریسه‌ای می‌کند).

در فاز سوم، puttygen کلید یا اطلاعاتی دربارهٔ آن را ذخیره می‌کند. گزینه‌های کنترل این بخش عبارتند از:

نوع خروجی مورد نظری که می‌خواهید puttygen تولید کند را مشخص می‌کند. گزینه‌های پذیرفتنی عبارتند از:
ذخیرهٔ کلید خصوصی در قالبی قابل استفاده توسط PuTTY. این قالب یا قالب استاندارد کلید SSH-1 خواهد بود، یا قالب کلید SSH-2 اختصاصی PuTTY (به نام «PPK»). این گزینه پیش‌فرض است.
تنها ذخیرهٔ کلید عمومی. برای کلیدهای SSH-1، قالب استاندارد کلید عمومی استفاده می‌شود («1024 37 5698745...»). برای کلیدهای SSH-2، کلید عمومی در قالب تعیین‌شده توسط RFC 4716 خروجی داده می‌شود، که یک فایل متنی چندخطی است و با خط «---- BEGIN SSH2 PUBLIC KEY ----» آغاز می‌شود.
تنها ذخیرهٔ کلید عمومی، در قالبی قابل استفاده توسط OpenSSH. برای کلیدهای SSH-1، این قالب خروجی رفتاری کاملاً مشابه با public دارد. برای کلیدهای SSH-2، کلید عمومی در قالب OpenSSH خروجی داده می‌شود که یک تک‌خط است («ssh-rsa AAAAB3NzaC1yc2...»).
چاپ اثر انگشت کلید عمومی. گزینهٔ -E به شما اجازه می‌دهد تعیین کنید کدام الگوریتم اثر انگشت استفاده شود. تصور می‌شود که همهٔ الگوریتم‌ها با OpenSSH سازگار هستند.
ذخیرهٔ یک کلید خصوصی SSH-2 در قالب OpenSSH، با استفاده از قدیمی‌ترین قالب موجود برای به حداکثر رساندن سازگاری عقبرو. این گزینه برای کلیدهای SSH-1 مجاز نیست.
همانند private-openssh، با این تفاوت که استفاده از قالب جدیدتر OpenSSH را حتی برای کلیدهای RSA، DSA و ECDSA اجباری می‌کند.
ذخیرهٔ یک کلید خصوصی SSH-2 در قالب ssh.com. این گزینه برای کلیدهای SSH-1 مجاز نیست.
ذخیرهٔ یک رونوشت متنی از اطلاعات مربوط به گواهی موجود روی کلید، در صورت وجود: اینکه گواهی میزبان است یا کاربر، برای کدام میزبان(ها) یا کاربر(ها) صادر شده، دورهٔ اعتبار، شناسه و شماره سریال، و اثر انگشت CA امضاکننده.
ذخیرهٔ یک رونوشت متنی از مؤلفه‌های عددی تشکیل‌دهندهٔ کلید (هر دو بخش عمومی و خصوصی، در صورت وجود). برای اشکال‌زدایی یا استفاده از PuTTYgen به عنوان تولیدکنندهٔ کلید برای برنامه‌هایی غیر از SSH مفید است.

خروجی شامل مجموعه‌ای از خطوط name=value است که در آن هر value یا یک رشتهٔ متنی به سبک C درون علامت نقل‌قول، یا یک عدد در مبنای شانزده است که با 0x... آغاز می‌شود، یا یک دادهٔ دودویی کدگذاری‌شده با base64 است که با b64("...") نمایش داده می‌شود.

اگر هیچ نوع خروجی مشخص نشود، مقدار پیش‌فرض private است.

مشخص کردن فایلی که puttygen باید خروجی خود را در آن بنویسد. اگر این گزینه مشخص نشود، چنانچه نوع فایل ورودی و خروجی یکسان باشد (مانند تغییر توضیح یا عبارت عبور)، puttygen فرض می‌کند که می‌خواهید روی فایل اصلی بازنویسی کنید؛ و اگر کلید عمومی، اثر انگشت، یا یکی از انواع رونوشت‌های متنی را درخواست کرده باشید، فرض می‌کند که می‌خواهید خروجی را در stdout بنویسد. در غیر این صورت، گزینهٔ -o الزامی است.
مترادفی برای «-O fingerprint».
مترادفی برای «-O public-openssh».
مترادفی برای «-O public».
مترادفی برای «-O cert-info».
مترادفی برای «-O text».
مشخص کردن الگوریتم مورد استفاده هنگام تولید اثر انگشت. الگوریتم‌های موجود عبارتند از sha256 (پیش‌فرض) و md5.

به‌طور پیش‌فرض، هنگام نمایش اثر انگشت یک کلید عمومی حاوی گواهی، puttygen گواهی را لحاظ نمی‌کند تا اثر انگشت نمایش‌داده‌شده با کلید عمومی زیرین یکسان باشد. اگر اثر انگشت را همراه با گواهی می‌خواهید (برای نمونه، جهت تمایز دادن دو کلید دارای گواهی از یکدیگر)، می‌توانید sha256-cert یا md5-cert را به عنوان نوع اثر انگشت تعیین کنید.

مشخص کردن نام یک فایل؛ خط نخست از این فایل خوانده شده (با حذف نویسهٔ خط جدید انتهایی) و به عنوان عبارت عبور جدید استفاده می‌شود. اگر فایل خالی باشد، کلید ذخیره‌شده بدون رمزنگاری خواهد بود. هشدار: اگر عبارت عبور اهمیت دارد، فایل باید روی یک سیستم‌فایل موقت ذخیره شود یا پس از استفاده به‌صورت امن پاک‌سازی گردد.

گزینه‌های زیر PuTTYgen را در حالت عادی اجرا نمی‌کنند، بلکه پیام‌های اطلاعاتی را چاپ کرده و سپس خارج می‌شوند:

نمایش پیامی که خلاصه‌ای از گزینه‌های موجود را نشان می‌دهد.
نمایش نسخهٔ PuTTYgen.
نمایش اثر انگشت‌های کلیدهای اصلی PGP مربوط به PuTTY، جهت کمک به اعتبارسنجی فایل‌های جدید ارائه‌شده توسط تیم PuTTY.

برای تولید یک جفت‌کلید SSH-2 RSA و ذخیرهٔ آن در قالب اختصاصی PuTTY (عبارت عبور از شما درخواست خواهد شد):

puttygen -t rsa -C "my home key" -o mykey.ppk

برای تولید کلیدی بزرگ‌تر (۴۰۹۶ بیتی):

puttygen -t rsa -b 4096 -C "my home key" -o mykey.ppk

برای تغییر عبارت عبور یک کلید (عبارت‌های عبور قبلی و جدید از شما درخواست خواهند شد):

puttygen -P mykey.ppk

برای تغییر توضیح (comment) یک کلید:

puttygen -C "new comment" mykey.ppk

برای تبدیل یک کلید به قالب کلید خصوصی OpenSSH:

puttygen mykey.ppk -O private-openssh -o my-openssh-key

برای تبدیل یک کلید از قالبی دیگر (puttygen به‌طور خودکار نوع کلید ورودی را تشخیص می‌دهد):

puttygen my-ssh.com-key -o mykey.ppk

برای نمایش اثر انگشت SHA-256 یک کلید (برخی انواع کلید حتی برای استخراج همین مقدار اطلاعات نیز نیازمند عبارت عبور هستند):

puttygen -l mykey.ppk

برای افزودن بخش عمومی کلید با قالب OpenSSH به فایل کلیدهای مجاز:

puttygen -L mykey.ppk >> $HOME/.ssh/authorized_keys
2004‐03‐24 PuTTY tool suite