puttygen(1) PuTTY tool suite puttygen(1) نام (NAME) puttygen - ابزار تولید کلید عمومی برای ابزارهای PuTTY خلاصه دستور (SYNOPSIS) 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 ] توضیحات (DESCRIPTION) دستور puttygen ابزاری برای تولید و دستکاری جفت‌کلیدهای عمومی و خصوصی SSH است. این ابزار بخشی از مجموعهٔ PuTTY است، هرچند می‌تواند با قالب‌های کلید مورد استفاده توسط برخی کلاینت‌های دیگر SSH نیز سازگار باشد و کار کند. هنگامی که puttygen را اجرا می‌کنید، سه کار انجام می‌دهد. نخست، یا یک فایل کلید موجود را بارگذاری می‌کند (اگر keyfile را مشخص کرده باشید)، یا یک کلید جدید تولید می‌کند (اگر keytype را مشخص کرده باشید). سپس، به دلخواه تغییراتی در کلید ایجاد می‌کند (مانند تغییر توضیح یا عبارت عبور)؛ و در نهایت، کلید یا اطلاعاتی دربارهٔ کلید را در یک فایل خروجی می‌دهد. هر سه فاز با گزینه‌های شرح داده‌شده در بخش بعدی کنترل می‌شوند. گزینه‌ها (OPTIONS) در فاز نخست، puttygen کلیدی را بارگذاری یا تولید می‌کند. توجه داشته باشید که تولید کلید نیازمند داده‌های تصادفی است، که ممکن است باعث مکث puttygen شود؛ به‌ویژه اگر سیستم شما داده‌های تصادفی (انتروپی) چندانی در دسترس نداشته باشد، این مکث ممکن است مدتی طول بکشد. گزینه‌های کنترل این فاز عبارتند از: keyfile مشخص کردن فایل کلیدی که باید بارگذاری شود. (از «-» برای خواندن فایل کلید از ورودی استاندارد استفاده کنید.) معمولاً این یک کلید خصوصی خواهد بود که می‌تواند در قالب کلید (استاندارد عملی) SSH-1، قالب کلید SSH-2 در PuTTY، یا یکی از دو قالب کلید خصوصی SSH-2 مورد استفاده توسط OpenSSH و پیاده‌سازی ssh.com باشد. همچنین می‌توانید فایلی را مشخص کنید که تنها شامل یک کلید عمومی باشد. عملیاتی که می‌توانید انجام دهید به خروجی دادن قالب کلید عمومی دیگری (احتمالاً با حذف گواهی پیوست‌شده در ابتدا) یا اثر انگشت (fingerprint) محدود می‌شود. کلیدهای عمومی می‌توانند در قالب‌های RFC 4716 یا OpenSSH یا قالب استاندارد SSH-1 باشند. -t keytype مشخص کردن نوع کلید برای تولید. مقادیر پذیرفتنی در اینجا عبارتند از rsa، dsa، ecdsa، eddsa، ed25519، و ed448 (برای تولید کلیدهای SSH-2)، و rsa1 (برای تولید کلیدهای SSH-1). -b bits مشخص کردن اندازهٔ کلید برای تولید، بر حسب بیت. مقدار پیش‌فرض برای کلیدهای rsa و dsa برابر با 2048 است. --primes method روش تولید اعداد اول. مقادیر پذیرفتنی در اینجا عبارتند از probable (پیش‌فرض)، proven، و proven-even؛ روش‌های بعدی کُندتر هستند. (مترادف‌های گوناگونی نیز برای نام این روش‌ها پذیرفته می‌شود.) روش «اعداد اول محتمل» (probable primes) ممکن است ناامن به نظر برسد، اما رایج‌ترین راهبرد تولید اعداد اول است. در تئوری این احتمال وجود دارد که تصادفاً عددی تولید شود که اول نباشد، اما نرم‌افزار به اندازه‌ای بررسی انجام می‌دهد که این احتمال بسیار ناچیز و نزدیک به صفر شود (کمتر از ۱ در 2^80 یا ۱ در 10^24). بنابراین در عمل، کسی چندان نگران آن نیست. روش‌های دیگر باعث می‌شوند PuTTYgen از اعدادی استفاده کند که مطمئن است اول هستند، چرا که عدد خروجی را به همراه اثبات اول بودن آن تولید می‌کند. این کار نیاز به پردازش بیشتری دارد، اما آن خطر تئوری در روش احتمالی را از بین می‌برد. اگر استاندارد امنیتی محلی خاصی دارید که این را می‌طلبد، یا اگر به استدلال احتمالی دربارهٔ ایمنی روش معمول اطمینان ندارید، می‌توانید از اعداد اول محتمل به اعداد اول اثبات‌شده تغییر حالت دهید. --strong-rsa هنگام تولید کلید RSA، اطمینان حاصل می‌کند که عوامل اولِ پیمانهٔ کلید، «اعداد اول قوی» (strong primes) باشند. عدد اول قوی عدد اولی است که طوری انتخاب شده که ساختار خاصی داشته باشد تا اِعمال برخی الگوریتم‌های فاکتورگیری دشوارتر شود؛ از این رو برخی استانداردهای امنیتی استفاده از آن‌ها را توصیه می‌کنند. با این حال، پیشرفته‌ترین الگوریتم‌های مدرن فاکتورگیری تحت تأثیر این موضوع قرار نمی‌گیرند، بنابراین فعال‌سازی این گزینه احتمالاً ارزشش را ندارد مگر آن‌که استاندارد محلی خاصی استفاده از آن را توصیه کرده باشد. -q جلوگیری از نمایش روند پیشرفت هنگام تولید یک کلید جدید. --old-passphrase file مشخص کردن نام یک فایل؛ خط اول از این فایل خوانده شده (با حذف نویسهٔ خط جدید انتهایی) و به عنوان عبارت عبور قبلی استفاده می‌شود. هشدار: اگر عبارت عبور مهم است، فایل باید روی یک سیستم‌فایل موقت ذخیره شود یا پس از استفاده، به‌صورت امن پاک‌سازی شود. --random-device device مشخص کردن دستگاهی که باید انتروپی از آن خوانده شود. به‌طور پیش‌فرض، puttygen از /dev/urandom استفاده می‌کند و در صورت نیاز به /dev/random بازمی‌گردد. در فاز دوم، puttygen به دلخواه مشخصه‌های کلید بارگذاری‌شده یا تولیدشده را تغییر می‌دهد. گزینه‌های کنترل این بخش عبارتند از: -C new-comment مشخص کردن یک رشتهٔ توضیح (comment) برای توصیف کلید. این رشته توسط PuTTY برای شناساندن کلید به شما استفاده خواهد شد (برای نمونه هنگام درخواست وارد کردن عبارت عبور، تا بدانید کدام عبارت عبور را تایپ کنید). -P نشان می‌دهد که می‌خواهید عبارت عبور کلید را تغییر دهید. این کار هنگام تولید یک کلید جدید خودکار است، اما هنگام ویرایش یک کلید موجود چنین نیست. --certificate certificate-file افزودن یک گواهی به سبک OpenSSH به بخش عمومی کلید، به طوری که فایل خروجی شامل یک کلید عمومیِ دارای گواهی با همان کلید خصوصی باشد. اگر فایل ورودی از قبل دارای گواهی بود، با گواهی جدید جایگزین خواهد شد. (از «-» برای خواندن گواهی از ورودی استاندارد استفاده کنید.) --remove-certificate حذف هرگونه گواهی که بخشی از کلید بوده است، جهت بازیابی نسخهٔ بدون گواهی کلید پایه‌ای. --reencrypt برای یک کلید خصوصی موجود که با یک عبارت عبور ذخیره شده است، رمزنگاری را بدون تغییر عبارت عبور تازه می‌کند. این گزینه بیش از همه به همراه گزینهٔ --ppk-param برای تغییر برخی جنبه‌های قالب فایل کلید یا رمزنگاری آن کاربرد دارد. --ppk-param key=value,... هنگام ذخیرهٔ یک فایل PPK (نوع خروجی پیش‌فرض private برای کلیدهای SSH-2)، جزئیات قالب روی دیسک را تنظیم می‌کند. مواردی که باید تغییر کنند به صورت مجموعه‌ای از جفت‌های key=value که با کاما جدا شده‌اند مشخص می‌شوند. شناسه‌های key عبارتند از: version نسخهٔ قالب PPK. مقادیر ممکن 3 (پیش‌فرض) و 2 هستند (که در برابر رمزگشایی با حملهٔ جستجوی فراگیر مقاومت کمتری دارد، اما اگر کلید شما باید در نسخه‌های قدیمی ابزارهای PuTTY یا سایر برنامه‌های استفاده‌کننده از PPK به کار رود، ممکن است به آن نیاز داشته باشید). شناسه‌های key زیر تنها روی فایل‌های نسخهٔ ۳ قالب PPK تأثیر می‌گذارند. kdf گونهٔ تابع اشتقاق کلید Argon2 برای استفاده. گزینه‌ها عبارتند از argon2id (پیش‌فرض و توصیه‌شده)، argon2i، و argon2d. اگر احتمال قرار گرفتن خود در معرض حملات کانال جانبی را متفاوت از حالت معمول ارزیابی می‌کنید، ممکن است بخواهید این گزینه را تغییر دهید. memory میزان حافظهٔ مورد نیاز برای رمزگشایی کلید، بر حسب کیلوبایت. مقدار پیش‌فرض 8192 (یعنی ۸ مگابایت) است. time زمان تقریبی مورد نیاز روی این رایانه برای اقدام به رمزگشایی کلید، بر حسب میلی‌ثانیه. مقدار پیش‌فرض 100 (میلی‌ثانیه) است. passes جایگزینی برای time: صریحاً تعداد مراحل درهم‌سازی مورد نیاز برای تلاش جهت رمزگشایی کلید را مشخص می‌کند. parallelism تعداد ریسه‌های موازی که می‌توانند برای رمزگشایی کلید استفاده شوند. مقدار پیش‌فرض 1 است (رمزگشایی را وادار به اجرا به صورت تک‌ریسه‌ای می‌کند). در فاز سوم، puttygen کلید یا اطلاعاتی دربارهٔ آن را ذخیره می‌کند. گزینه‌های کنترل این بخش عبارتند از: -O output-type نوع خروجی مورد نظری که می‌خواهید puttygen تولید کند را مشخص می‌کند. گزینه‌های پذیرفتنی عبارتند از: private ذخیرهٔ کلید خصوصی در قالبی قابل استفاده توسط PuTTY. این قالب یا قالب استاندارد کلید SSH-1 خواهد بود، یا قالب کلید SSH-2 اختصاصی PuTTY (به نام «PPK»). این گزینه پیش‌فرض است. public تنها ذخیرهٔ کلید عمومی. برای کلیدهای SSH-1، قالب استاندارد کلید عمومی استفاده می‌شود («1024 37 5698745...»). برای کلیدهای SSH-2، کلید عمومی در قالب تعیین‌شده توسط RFC 4716 خروجی داده می‌شود، که یک فایل متنی چندخطی است و با خط «---- BEGIN SSH2 PUBLIC KEY ----» آغاز می‌شود. public-openssh تنها ذخیرهٔ کلید عمومی، در قالبی قابل استفاده توسط OpenSSH. برای کلیدهای SSH-1، این قالب خروجی رفتاری کاملاً مشابه با public دارد. برای کلیدهای SSH-2، کلید عمومی در قالب OpenSSH خروجی داده می‌شود که یک تک‌خط است («ssh-rsa AAAAB3NzaC1yc2...»). fingerprint چاپ اثر انگشت کلید عمومی. گزینهٔ -E به شما اجازه می‌دهد تعیین کنید کدام الگوریتم اثر انگشت استفاده شود. تصور می‌شود که همهٔ الگوریتم‌ها با OpenSSH سازگار هستند. private-openssh ذخیرهٔ یک کلید خصوصی SSH-2 در قالب OpenSSH، با استفاده از قدیمی‌ترین قالب موجود برای به حداکثر رساندن سازگاری عقبرو. این گزینه برای کلیدهای SSH-1 مجاز نیست. private-openssh-new همانند private-openssh، با این تفاوت که استفاده از قالب جدیدتر OpenSSH را حتی برای کلیدهای RSA، DSA و ECDSA اجباری می‌کند. private-sshcom ذخیرهٔ یک کلید خصوصی SSH-2 در قالب ssh.com. این گزینه برای کلیدهای SSH-1 مجاز نیست. cert-info ذخیرهٔ یک رونوشت متنی از اطلاعات مربوط به گواهی موجود روی کلید، در صورت وجود: اینکه گواهی میزبان است یا کاربر، برای کدام میزبان(ها) یا کاربر(ها) صادر شده، دورهٔ اعتبار، شناسه و شماره سریال، و اثر انگشت CA امضاکننده. text ذخیرهٔ یک رونوشت متنی از مؤلفه‌های عددی تشکیل‌دهندهٔ کلید (هر دو بخش عمومی و خصوصی، در صورت وجود). برای اشکال‌زدایی یا استفاده از PuTTYgen به عنوان تولیدکنندهٔ کلید برای برنامه‌هایی غیر از SSH مفید است. خروجی شامل مجموعه‌ای از خطوط name=value است که در آن هر value یا یک رشتهٔ متنی به سبک C درون علامت نقل‌قول، یا یک عدد در مبنای شانزده است که با 0x... آغاز می‌شود، یا یک دادهٔ دودویی کدگذاری‌شده با base64 است که با b64("...") نمایش داده می‌شود. اگر هیچ نوع خروجی مشخص نشود، مقدار پیش‌فرض private است. -o output-file مشخص کردن فایلی که puttygen باید خروجی خود را در آن بنویسد. اگر این گزینه مشخص نشود، چنانچه نوع فایل ورودی و خروجی یکسان باشد (مانند تغییر توضیح یا عبارت عبور)، puttygen فرض می‌کند که می‌خواهید روی فایل اصلی بازنویسی کنید؛ و اگر کلید عمومی، اثر انگشت، یا یکی از انواع رونوشت‌های متنی را درخواست کرده باشید، فرض می‌کند که می‌خواهید خروجی را در stdout بنویسد. در غیر این صورت، گزینهٔ -o الزامی است. -l مترادفی برای «-O fingerprint». -L مترادفی برای «-O public-openssh». -p مترادفی برای «-O public». --cert-info مترادفی برای «-O cert-info». --dump مترادفی برای «-O text». -E fptype مشخص کردن الگوریتم مورد استفاده هنگام تولید اثر انگشت. الگوریتم‌های موجود عبارتند از sha256 (پیش‌فرض) و md5. به‌طور پیش‌فرض، هنگام نمایش اثر انگشت یک کلید عمومی حاوی گواهی، puttygen گواهی را لحاظ نمی‌کند تا اثر انگشت نمایش‌داده‌شده با کلید عمومی زیرین یکسان باشد. اگر اثر انگشت را همراه با گواهی می‌خواهید (برای نمونه، جهت تمایز دادن دو کلید دارای گواهی از یکدیگر)، می‌توانید sha256-cert یا md5-cert را به عنوان نوع اثر انگشت تعیین کنید. --new-passphrase file مشخص کردن نام یک فایل؛ خط نخست از این فایل خوانده شده (با حذف نویسهٔ خط جدید انتهایی) و به عنوان عبارت عبور جدید استفاده می‌شود. اگر فایل خالی باشد، کلید ذخیره‌شده بدون رمزنگاری خواهد بود. هشدار: اگر عبارت عبور اهمیت دارد، فایل باید روی یک سیستم‌فایل موقت ذخیره شود یا پس از استفاده به‌صورت امن پاک‌سازی گردد. گزینه‌های زیر PuTTYgen را در حالت عادی اجرا نمی‌کنند، بلکه پیام‌های اطلاعاتی را چاپ کرده و سپس خارج می‌شوند: -h, --help نمایش پیامی که خلاصه‌ای از گزینه‌های موجود را نشان می‌دهد. -V, --version نمایش نسخهٔ PuTTYgen. --pgpfp نمایش اثر انگشت‌های کلیدهای اصلی PGP مربوط به PuTTY، جهت کمک به اعتبارسنجی فایل‌های جدید ارائه‌شده توسط تیم PuTTY. مثال‌ها (EXAMPLES) برای تولید یک جفت‌کلید 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 PuTTY tool suite 2004‐03‐24 puttygen(1)