SSH-KEYGEN(1) General Commands Manual SSH-KEYGEN(1)

ssh-keygen — ابزار تولید، مدیریت و تبدیل کلیدهای احراز هویت در OpenSSH

ssh-keygen [-q] [-a rounds] [-b bits] [-C comment] [-f output_keyfile] [-m format] [-N new_passphrase] [-O option] [-t ecdsa | ecdsa-sk | ed25519 | ed25519-sk | mldsa44-ed25519 | rsa] [-w provider] [-Z cipher] ssh-keygen -p [-a rounds] [-f keyfile] [-m format] [-N new_passphrase] [-P old_passphrase] [-Z cipher] ssh-keygen -i [-f input_keyfile] [-m key_format] ssh-keygen -e [-f input_keyfile] [-m key_format] ssh-keygen -y [-f input_keyfile] ssh-keygen -c [-a rounds] [-C comment] [-f keyfile] [-P passphrase] ssh-keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile] ssh-keygen -B [-f input_keyfile] ssh-keygen -D pkcs11 ssh-keygen -F hostname [-lv] [-f known_hosts_file] ssh-keygen -H [-f known_hosts_file] ssh-keygen -K [-a rounds] [-w provider] ssh-keygen -R hostname [-f known_hosts_file] ssh-keygen -r hostname [-g] [-f input_keyfile] ssh-keygen -M generate [-O option] output_file ssh-keygen -M screen [-f input_file] [-O option] output_file ssh-keygen -I certificate_identity -s ca_key [-hU] [-D pkcs11_provider] [-n principals] [-O option] [-V validity_interval] [-z serial_number] file ... ssh-keygen -L [-f input_keyfile] ssh-keygen -A [-a rounds] [-f prefix_path] ssh-keygen -k -f krl_file [-u] [-s ca_public] [-z version_number] file ... ssh-keygen -Q [-l] -f krl_file file ... ssh-keygen -Y find-principals [-O option] -s signature_file -f allowed_signers_file ssh-keygen -Y match-principals -I signer_identity -f allowed_signers_file ssh-keygen -Y check-novalidate [-O option] -n namespace -s signature_file ssh-keygen -Y sign [-O option] -f key_file -n namespace file ... ssh-keygen -Y verify [-O option] -f allowed_signers_file -I signer_identity -n namespace -s signature_file [-r revocation_file]

ssh-keygen کلیدهای احراز هویت را برای ssh(1) تولید، مدیریت و تبدیل می‌کند. ssh-keygen می‌تواند کلیدهایی برای استفاده در نسخه ۲ پروتکل SSH ایجاد نماید.

نوع کلیدی که باید تولید شود با استفاده از گزینهٔ -t مشخص می‌شود. اگر بدون هیچ آرگومانی اجرا شود، ssh-keygen یک کلید Ed25519 تولید خواهد کرد.

ssh-keygen همچنین برای تولید گروه‌ها جهت استفاده در تبادل گروه دیفی-هلمن (DH-GEX) به کار می‌رود. برای جزئیات بیشتر به بخش تولید پیمانه‌ها (MODULI GENERATION) مراجعه کنید.

در نهایت، ssh-keygen می‌تواند برای تولید و به‌روزرسانی فهرست‌های ابطال کلید (KRL) و همچنین بررسی ابطال کلیدهای مشخص‌شده توسط یک فهرست استفاده شود. برای جزئیات بیشتر به بخش فهرست‌های ابطال کلید (KEY REVOCATION LISTS) مراجعه فرمایید.

به‌طور معمول، هر کاربری که مایل است از SSH با احراز هویت کلید عمومی استفاده کند، این برنامه را یک‌بار اجرا می‌کند تا کلید احراز هویت را در ~/.ssh/id_ecdsa ، ~/.ssh/id_ecdsa_sk ، ~/.ssh/id_ed25519 ، ~/.ssh/id_ed25519_sk ، ~/.ssh/id_mldsa44_ed25519 یا ~/.ssh/id_rsa ایجاد نماید. علاوه بر این، مدیر سیستم ممکن است از آن برای تولید کلیدهای میزبان استفاده کند، همان‌طور که در /etc/rc دیده می‌شود.

به‌طور معمول این برنامه کلید را تولید کرده و فایلی را برای ذخیره کردن کلید خصوصی درخواست می‌کند. کلید عمومی در فایلی با همان نام که “.pub” به آن پیوست شده است ذخیره می‌شود. برنامه همچنین یک عبارت عبور (passphrase) را درخواست می‌کند. عبارت عبور می‌تواند خالی باشد تا نشان‌دهندهٔ عدم وجود عبارت عبور باشد (کلیدهای میزبان حتماً باید دارای عبارت عبور خالی باشند)، یا می‌تواند رشته‌ای با طول دلخواه باشد. یک عبارت عبور شبیه به یک گذرواژه است، جز اینکه می‌تواند عبارتی شامل مجموعه‌ای از واژه‌ها، علائم نگارشی، اعداد، فاصله‌های خالی، یا هر رشته دلخواهی از نویسه‌ها باشد. عبارت‌های عبور مناسب دارای طول ۱۰ تا ۳۰ نویسه هستند، جملات ساده نبوده یا به آسانی قابل حدس زدن نیستند (نثر انگلیسی تنها ۱ تا ۲ بیت آنتروپی در هر نویسه دارد و عبارت‌های عبور بسیار ضعیفی فراهم می‌کند)، و شامل ترکیبی از حروف بزرگ و کوچک، اعداد و نویسه‌های غیرالفبایی-عددی هستند. عبارت عبور را می‌توان بعداً با استفاده از گزینهٔ -p تغییر داد.

هیچ راهی برای بازیابی یک عبارت عبور گم‌شده یا فراموش‌شده وجود ندارد. اگر عبارت عبور گم یا فراموش شود، باید کلید جدیدی تولید شود و کلید عمومی متناظر آن به ماشین‌های دیگر کپی گردد.

ssh-keygen به‌طور پیش‌فرض کلیدها را در قالب اختصاصی OpenSSH ذخیره می‌کند. این قالب ارجح است زیرا محافظت بهتری برای کلیدها در حالت سکون (at rest) فراهم می‌آورد و همچنین امکان ذخیره‌سازی یادداشت (comment) کلید را در داخل خود فایل کلید خصوصی میسر می‌سازد. یادداشت کلید می‌تواند برای کمک به شناسایی کلید مفید باشد. این یادداشت هنگام ایجاد کلید با مقدار “user@host” مقداردهی اولیه می‌شود، اما با استفاده از گزینهٔ -c قابل تغییر است.

همچنان این امکان برای ssh-keygen وجود دارد که کلیدهای خصوصی با قالب PEM قبلی را با استفاده از فلگ -m بنویسد. این حالت ممکن است هنگام تولید کلیدهای جدید استفاده شود، و کلیدهای قالبیِ جدیدِ موجود نیز می‌توانند با استفاده از این گزینه همراه با فلگ -p (تغییر عبارت عبور) تبدیل شوند.

پس از تولید یک کلید، ssh-keygen خواهد پرسید که کلیدها برای فعال‌سازی باید در کجا قرار گیرند.

گزینه‌ها به شرح زیر هستند:

تولید کلیدهای میزبان از تمامی انواع کلیدهای پیش‌فرض (rsa، ecdsa، mldsa44-ed25519 و ed25519) در صورتی که از قبل وجود نداشته باشند. کلیدهای میزبان با مسیر پیش‌فرض فایل کلید، یک عبارت عبور خالی، تعداد بیت‌های پیش‌فرض برای نوع کلید و یادداشت پیش‌فرض تولید می‌شوند. اگر گزینهٔ -f نیز مشخص شده باشد، آرگومان آن به عنوان یک پیشوند برای مسیر پیش‌فرض فایل‌های کلید میزبان حاصل به کار می‌رود. این ویژگی توسط /etc/rc جهت تولید کلیدهای میزبان جدید استفاده می‌شود.
rounds
هنگام ذخیره کردن یک کلید خصوصی، این گزینه تعداد دورهای KDF (تابع مشتق‌گیری کلید، در حال حاضر bcrypt_pbkdf(3)) مورد استفاده را مشخص می‌کند. اعداد بزرگ‌تر منجر به کندتر شدن اعتبارسنجی عبارت عبور و افزایش مقاومت در برابر شکستن گذرواژه با جستجوی فراگیر (در صورتی که کلیدها به سرقت بروند) می‌شوند. مقدار پیش‌فرض ۱۶ دور است.
نمایش خلاصه bubblebabble از فایل کلید خصوصی یا عمومی مشخص‌شده.
bits
تعداد بیت‌های کلید مورد نظر برای ساخت را مشخص می‌کند. برای کلیدهای RSA، حداقل اندازه ۱۰۲۴ بیت و مقدار پیش‌فرض ۳۰۷۲ بیت است. به‌طور کلی، ۳۰۷۲ بیت کافی در نظر گرفته می‌شود. برای کلیدهای ECDSA، فلگ -b طول کلید را با انتخاب یکی از سه اندازه منحنی بیضوی تعیین می‌کند: ۲۵۶، ۳۸۴ یا ۵۲۱ بیت. تلاش برای استفاده از طول بیت‌هایی غیر از این سه مقدار برای کلیدهای ECDSA با شکست مواجه خواهد شد. کلیدهای ECDSA-SK، Ed25519 و Ed25519-SK دارای طول ثابتی هستند و فلگ -b نادیده گرفته خواهد شد.
comment
یک یادداشت جدید ارائه می‌دهد.
درخواست تغییر یادداشت در فایل‌های کلید خصوصی و عمومی. برنامه فایل حاوی کلیدهای خصوصی، عبارت عبور در صورت وجود برای کلید، و یادداشت جدید را درخواست خواهد کرد.
pkcs11
بارگیری کلیدهای عمومی ارائه‌شده توسط کتابخانهٔ مشترک PKCS#11 به نام pkcs11. هنگامی که همراه با -s استفاده شود، این گزینه نشان می‌دهد که یک کلید CA در یک توکن PKCS#11 قرار دارد (برای جزئیات بیشتر به بخش گواهی‌ها (CERTIFICATES) مراجعه کنید).
fingerprint_hash
الگوریتم درهم‌سازی مورد استفاده هنگام نمایش اثرانگشت کلید را مشخص می‌کند. گزینه‌های معتبر عبارتند از: “md5” و “sha256”. مقدار پیش‌فرض “sha256” است.
این گزینه یک فایل کلید خصوصی یا عمومی OpenSSH را می‌خواند و یک کلید عمومی را در یکی از قالب‌های مشخص‌شده توسط گزینهٔ -m در خروجی استاندارد چاپ می‌کند. قالب صادرات پیش‌فرض “RFC4716” است. این گزینه امکان صادر کردن کلیدهای OpenSSH را برای استفاده توسط سایر برنامه‌ها، از جمله چندین پیاده‌سازی تجاری SSH فراهم می‌سازد.
hostname | [hostname]:port
جستجو برای hostname مشخص‌شده (همراه با شماره پورت اختیاری) در یک فایل known_hosts ، و فهرست کردن تمامی موارد یافت‌شده. این گزینه برای یافتن نام‌ها یا نشانی‌های میزبان درهم‌سازی‌شده (هش‌شده) مفید است و همچنین می‌تواند همراه با گزینهٔ -H برای چاپ کلیدهای یافت‌شده در قالب هش‌شده استفاده شود.
filename
نام پروندهٔ فایل کلید را مشخص می‌کند.
استفاده از قالب عمومی DNS هنگام چاپ رکوردهای منبع اثرانگشت با استفاده از دستور -r.
درهم‌سازی (هش کردن) یک فایل known_hosts. این کار تمام نام‌های میزبان و نشانی‌ها را در فایل مشخص‌شده با نمایش‌های هش‌شده جایگزین می‌کند؛ محتوای اصلی به فایلی با پسوند old. منتقل می‌شود. این هش‌ها می‌توانند به‌طور عادی توسط ssh و sshd استفاده شوند، اما در صورت افشای محتوای فایل، اطلاعات هویتی را آشکار نمی‌سازند. این گزینه نام‌های میزبان هش‌شدهٔ موجود را تغییر نمی‌دهد و بنابراین استفاده از آن روی فایل‌هایی که نام‌های هش‌شده و غیرهش‌شده را ترکیب کرده‌اند بی‌خطر است.
هنگام امضای یک کلید، به‌جای گواهی کاربر یک گواهی میزبان ایجاد می‌کند. برای جزئیات بیشتر به بخش گواهی‌ها (CERTIFICATES) مراجعه کنید.
certificate_identity
هویت کلید را هنگام امضای یک کلید عمومی مشخص می‌کند. برای جزئیات بیشتر به بخش گواهی‌ها (CERTIFICATES) مراجعه کنید.
این گزینه یک فایل کلید خصوصی (یا عمومی) رمزگذاری‌نشده را در قالب مشخص‌شده توسط گزینهٔ -m می‌خواند و یک کلید خصوصی (یا عمومی) سازگار با OpenSSH را در خروجی استاندارد چاپ می‌کند. این گزینه امکان وارد کردن کلیدها از سایر نرم‌افزارها، از جمله چندین پیاده‌سازی تجاری SSH را فراهم می‌سازد. قالب واردات پیش‌فرض “RFC4716” است.
بارگیری کلیدهای مقیم (resident keys) از یک احراز هویت‌کنندهٔ FIDO. فایل‌های کلید عمومی و خصوصی برای هر کلید بارگیری‌شده در دایرکتوری جاری نوشته خواهند شد. اگر چندین احراز هویت‌کنندهٔ FIDO متصل باشند، کلیدها از اولین احراز هویت‌کننده‌ای که لمس شود بارگیری خواهند شد. برای اطلاعات بیشتر به بخش احراز هویت‌کننده فیدو (FIDO AUTHENTICATOR) مراجعه فرمایید.
تولید یک فایل KRL (فهرست ابطال کلید). در این حالت، ssh-keygen یک فایل KRL در مسیر مشخص‌شده از طریق فلگ -f تولید می‌کند که هر کلید یا گواهی ارائه‌شده در خط فرمان را باطل می‌سازد. کلیدها/گواهی‌هایی که باید باطل شوند را می‌توان با فایل کلید عمومی یا با استفاده از قالب شرح‌داده‌شده در بخش فهرست‌های ابطال کلید (KEY REVOCATION LISTS) مشخص کرد.
محتویات یک یا چند گواهی را چاپ می‌کند.
نمایش اثرانگشت فایل کلید عمومی مشخص‌شده. ssh-keygen تلاش خواهد کرد تا فایل کلید عمومی منطبق را پیدا کرده و اثرانگشت آن را چاپ کند. اگر با -v ترکیب شود، یک نمایش بصری اسکی‌آرت (ASCII art) از کلید به همراه اثرانگشت ارائه می‌شود.
generate
تولید پارامترهای کاندید تبادل گروه دیفی-هلمن (DH-GEX) جهت استفادهٔ نهایی توسط روش‌های تبادل کلید ‘diffie-hellman-group-exchange-*’. اعداد تولیدشده با این عملیات باید قبل از استفاده بیشتر غربالگری شوند. برای اطلاعات بیشتر به بخش تولید پیمانه‌ها (MODULI GENERATION) مراجعه فرمایید.
screen
غربالگری پارامترهای کاندید برای تبادل گروه دیفی-هلمن. این عمل فهرستی از اعداد کاندید را می‌پذیرد و آزمایش می‌کند که آیا آن‌ها اعداد اول ایمن (Sophie Germain) با مولدهای گروه قابل قبول هستند یا خیر. نتایج این عملیات را می‌توان به فایل /etc/ssh/moduli افزود. برای اطلاعات بیشتر به بخش تولید پیمانه‌ها (MODULI GENERATION) مراجعه کنید.
key_format
مشخص کردن یک قالب کلید برای تولید کلید، گزینه‌های تبدیل -i (وارد کردن)، -e (صادر کردن)، و عملیات تغییر عبارت عبور با -p. مورد اخیر می‌تواند برای تبدیل میان قالب‌های کلید خصوصی OpenSSH و PEM استفاده شود. قالب‌های کلید پشتیبانی‌شده عبارتند از: “RFC4716” (کلید عمومی یا خصوصی RFC 4716/SSH2)، “PKCS8” (کلید عمومی یا خصوصی PKCS8) یا “PEM” (کلید عمومی PEM). به‌طور پیش‌فرض OpenSSH کلیدهای خصوصی تازه‌تولیدشده را در قالب اختصاصی خود ذخیره می‌کند، اما هنگام تبدیل کلیدهای عمومی برای صدور، قالب پیش‌فرض “RFC4716” است. تنظیم قالب روی “PEM” هنگام تولید یا به‌روزرسانی نوع کلید خصوصی پشتیبانی‌شده باعث می‌شود که کلید در قالب قدیمی کلید خصوصی PEM ذخیره شود.
new_passphrase
عبارت عبور جدید را ارائه می‌دهد.
principals
یک یا چند کارگزار اصلی (نام‌های کاربری یا نام‌های میزبان) را برای گنجاندن در گواهی هنگام امضای یک کلید مشخص می‌کند. می‌توان چندین کارگزار اصلی را جداشده با کاما مشخص کرد. برای جزئیات بیشتر به بخش گواهی‌ها (CERTIFICATES) مراجعه کنید.
option
یک گزینهٔ کلید/مقدار را مشخص می‌کند. این گزینه‌ها مختص به عملیاتی هستند که از ssh-keygen درخواست شده است انجام دهد.

هنگام امضای گواهی‌ها، یکی از گزینه‌های فهرست‌شده در بخش گواهی‌ها (CERTIFICATES) را می‌توان در اینجا مشخص کرد.

هنگام انجام تولید یا غربالگری پیمانه‌ها، یکی از گزینه‌های فهرست‌شده در بخش تولید پیمانه‌ها (MODULI GENERATION) را می‌توان تعیین کرد.

هنگام تولید کلیدهای مبتنی بر احراز هویت‌کنندهٔ FIDO، گزینه‌های فهرست‌شده در بخش احراز هویت‌کننده فیدو (FIDO AUTHENTICATOR) را می‌توان مشخص نمود.

هنگام تغییر عبارت عبور برای یک کلید موجود، گزینه‌های فهرست‌شده در مستندات مربوط به فلگ -p می‌توانند استفاده شوند.

هنگام انجام گزینه‌های مربوط به امضا با استفاده از فلگ -Y -، گزینه‌های زیر پذیرفته می‌شوند:

=algorithm
الگوریتم درهم‌سازی را برای هش کردن پیامی که باید امضا شود انتخاب می‌کند. الگوریتم‌های معتبر عبارتند از “sha256” و “sha512”. مقدار پیش‌فرض “sha512” است.
چاپ کامل کلید عمومی در خروجی استاندارد پس از اعتبارسنجی امضا.
=timestamp
زمانی را برای استفاده هنگام اعتبارسنجی امضاها به‌جای زمان جاری مشخص می‌کند. زمان را می‌توان به عنوان یک تاریخ یا زمان در قالب‌های YYYYMMDD[Z] یا YYYYMMDDHHMM[SS][Z] مشخص نمود. تاریخ‌ها و زمان‌ها در منطقهٔ زمانی جاری سیستم تفسیر خواهند شد مگر اینکه با یک نویسهٔ Z خاتمه یابند، که باعث می‌شود در منطقهٔ زمانی UTC تفسیر شوند.

هنگام تولید رکوردهای SSHFP DNS از کلیدهای عمومی با استفاده از فلگ -r -، گزینه‌های زیر پذیرفته می‌شوند:

=algorithm
انتخاب یک الگوریتم درهم‌سازی برای استفاده هنگام چاپ رکوردهای SSHFP با استفاده از فلگ -D. الگوریتم‌های معتبر عبارتند از “sha1” و “sha256”. حالت پیش‌فرض چاپ هر دو است.

گزینهٔ -O را می‌توان چندین بار مشخص کرد.

passphrase
عبارت عبور (قدیمی) را ارائه می‌دهد.
درخواست تغییر عبارت عبور یک فایل کلید خصوصی به‌جای ایجاد یک کلید خصوصی جدید. برنامه فایل حاوی کلید خصوصی، عبارت عبور قدیمی، و دو بار عبارت عبور جدید را درخواست خواهد کرد.

به‌روزرسانی عبارت عبور باعث می‌شود کلیدهای رمزگذاری‌شده مجدداً رمزگذاری شوند، که امکان تغییر الگوریتم رمزنگار و/یا تعداد دورهای KDF (به ترتیب گزینه‌های -Z و -a) را فراهم می‌سازد.

این گزینه همچنین می‌تواند برای تنظیم یا پاک کردن گزینه‌های مرتبط با FIDO از طریق فلگ -O استفاده شود. گزینه‌های FIDO زیر قابل تغییر هستند:

 
افزودن یا حذف این شرط که امضاهای ایجادشده با استفاده از این کلید شامل اثبات حضور کاربر باشند (مثلاً با لمس کردن احراز هویت‌کننده توسط کاربر).
 
افزودن یا حذف این شرط که امضاهای ایجادشده با استفاده از این کلید ابتدا هویت کاربر را تایید نمایند، مثلاً با پین (PIN) یا بیومتریک روی توکن.
بررسی اینکه آیا کلیدها در یک KRL باطل شده‌اند یا خیر. اگر گزینهٔ -l نیز مشخص شده باشد، آنگاه محتویات KRL چاپ خواهد شد.
حالت بی‌صدا برای ssh-keygen.
hostname | [hostname]:port
حذف تمامی کلیدهای متعلق به hostname مشخص‌شده (همراه با شماره پورت اختیاری) از یک فایل known_hosts. این گزینه برای حذف میزبان‌های هش‌شده مفید است (گزینهٔ -H در بالا را ببینید).
hostname
چاپ رکورد منبع اثرانگشت SSHFP به نام hostname برای فایل کلید عمومی مشخص‌شده.
ca_key
گواهی کردن (امضا کردن) یک کلید عمومی با استفاده از کلید CA مشخص‌شده. برای جزئیات بیشتر به بخش گواهی‌ها (CERTIFICATES) مراجعه فرمایید.

هنگام تولید یک KRL، فلگ -s مسیری را به یک فایل کلید عمومی CA مشخص می‌کند که برای ابطال مستقیم گواهی‌ها با شناسه کلید یا شماره سریال استفاده می‌شود. برای جزئیات بیشتر به بخش فهرست‌های ابطال کلید (KEY REVOCATION LISTS) مراجعه فرمایید.

ecdsa | | | | |
نوع کلید مورد نظر برای ساخت را مشخص می‌کند. مقادیر ممکن عبارتند از “ecdsa ،” “ecdsa-sk ،” “ed25519” (پیش‌فرض)، “ed25519-sk ،” “mldsa44-ed25519” یا “rsa”.

این فلگ همچنین می‌تواند برای مشخص کردن نوع امضای مورد نظر هنگام امضای گواهی‌ها با استفاده از یک کلید CA از نوع RSA استفاده شود. انواع امضای RSA موجود عبارتند از “ssh-rsa” (امضاهای SHA1، توصیه نمی‌شود)، “rsa-sha2-256” و “rsa-sha2-512” (پیش‌فرض برای کلیدهای RSA).

هنگامی که در ترکیب با -s یا -Y sign استفاده شود، این گزینه نشان می‌دهد که یک کلید CA در یک ssh-agent(1) قرار دارد. برای اطلاعات بیشتر به بخش گواهی‌ها (CERTIFICATES) مراجعه نمایید.
به‌روزرسانی یک KRL. هنگامی که همراه با -k مشخص شود، کلیدهای فهرست‌شده از طریق خط فرمان به‌جای ساخته شدن یک KRL جدید، به KRL موجود افزوده می‌شوند.
validity_interval
تعیین یک بازهٔ اعتبار هنگام امضای یک گواهی. یک بازهٔ اعتبار ممکن است شامل یک زمان واحد باشد، به این معنی که گواهی از هم‌اکنون معتبر بوده و در آن زمان منقضی می‌شود، یا می‌تواند شامل دو زمان جداشده با دو‌نقطه باشد تا یک بازهٔ زمانی صریح را نشان دهد.

زمان شروع می‌تواند به صورت‌های زیر مشخص شود:

  • رشتهٔ “always” برای نشان دادن اینکه گواهی زمان شروع مشخصی ندارد.
  • یک تاریخ یا زمان در منطقه زمانی سیستم در قالب YYYYMMDD یا YYYYMMDDHHMM[SS].
  • یک تاریخ یا زمان در منطقه زمانی UTC به صورت YYYYMMDDZ یا YYYYMMDDHHMM[SS]Z.
  • یک زمان نسبی پیش از زمان جاری سیستم شامل علامت منفی و به دنبال آن یک بازه در قالبی که در بخش TIME FORMATS در sshd_config(5) شرح داده شده است.
  • ثانیه‌های خام از مبدأ زمان یونیکس (۱ ژانویه ۱۹۷۰ ساعت ۰۰:۰۰:۰۰ به وقت UTC) به عنوان یک عدد هگزادسیمال که با “0x” آغاز می‌شود.

زمان پایان می‌تواند به‌طور مشابه با زمان شروع مشخص شود:

  • رشتهٔ “forever” برای نشان دادن اینکه گواهی هیچ زمان پایانی مشخصی ندارد.
  • یک تاریخ یا زمان در منطقه زمانی سیستم در قالب YYYYMMDD یا YYYYMMDDHHMM[SS].
  • یک تاریخ یا زمان در منطقه زمانی UTC به صورت YYYYMMDDZ یا YYYYMMDDHHMM[SS]Z.
  • یک زمان نسبی پس از زمان جاری سیستم شامل علامت مثبت و به دنبال آن یک بازه در قالبی که در بخش TIME FORMATS در sshd_config(5) شرح داده شده است.
  • ثانیه‌های خام از مبدأ زمان یونیکس (۱ ژانویه ۱۹۷۰ ساعت ۰۰:۰۰:۰۰ به وقت UTC) به عنوان یک عدد هگزادسیمال که با “0x” آغاز می‌شود.

برای مثال:

+52w1d
معتبر از اکنون تا ۵۲ هفته و یک روز پس از اکنون.
-4w:+4w
معتبر از چهار هفته قبل تا چهار هفته پس از اکنون.
20100101123000:20110101123000
معتبر از ۱۲:۳۰ بعدازظهر ۱ ژانویه ۲۰۱۰ تا ۱۲:۳۰ بعدازظهر ۱ ژانویه ۲۰۱۱.
20100101123000Z:20110101123000Z
مشابه، اما در منطقه زمانی UTC به‌جای منطقه زمانی سیستم تفسیر می‌شود.
-1d:20110101
معتبر از دیروز تا نیمه‌شب ۱ ژانویه ۲۰۱۱.
0x1:0x2000000000
معتبر تقریباً از اوایل ۱۹۷۰ تا مه ۲۰۳۳.
-1m:forever
معتبر از یک دقیقه قبل و بدون انقضا.
حالت پرحرف (verbose). باعث می‌شود ssh-keygen پیام‌های اشکال‌زدایی دربارهٔ پیشرفت خود چاپ کند. این برای اشکال‌زدایی تولید پیمانه‌ها مفید است. استفادهٔ چندباره از گزینهٔ -v میزان جزئیات را افزایش می‌دهد. حداکثر مقدار ۳ است.
provider
مسیری را به یک کتابخانه مشخص می‌کند که هنگام ساخت کلیدهای میزبانی‌شده روی احراز هویت‌کنندهٔ FIDO استفاده خواهد شد، و حالت پیش‌فرضِ استفاده از پشتیبانی توکار USB HID را بازنویسی می‌کند.
find-principals
یافتن کارگزار(های) اصلی مرتبط با کلید عمومی یک امضا، ارائه‌شده با استفاده از فلگ -s در یک فایل امضاکنندگان مجاز ارائه‌شده با استفاده از فلگ -f. قالب فایل امضاکنندگان مجاز در بخش امضاکنندگان مجاز (ALLOWED SIGNERS) در زیر مستند شده است. اگر یک یا چند کارگزار اصلی منطبق یافت شوند، در خروجی استاندارد بازگردانده می‌شوند.
match-principals
یافتن کارگزار اصلی منطبق با نام ارائه‌شده با استفاده از فلگ -I در فایل امضاکنندگان مجاز مشخص‌شده با فلگ -f. اگر یک یا چند کارگزار اصلی منطبق یافت شوند، در خروجی استاندارد بازگردانده می‌شوند.
check-novalidate
بررسی اینکه آیا امضای تولیدشده با استفاده از ssh-keygen -Y sign دارای ساختاری معتبر است یا خیر. این گزینه اعتبارسنجی نمی‌کند که آیا امضا از طرف یک امضاکنندهٔ مجاز آمده است یا خیر. هنگام آزمایش یک امضا، ssh-keygen یک پیام را در ورودی استاندارد و یک فضای نام امضا را با استفاده از -n می‌پذیرد. فایلی حاوی امضای متناظر نیز باید با استفاده از فلگ -s ارائه شود. آزمایش موفقیت‌آمیز امضا با بازگرداندن وضعیت خروج صفر توسط ssh-keygen اعلام می‌شود.
sign
امضای رمزنگاری‌شدهٔ یک فایل یا مقداری داده با استفاده از یک کلید SSH. هنگام امضا کردن، ssh-keygen صفر یا چند فایل را برای امضا در خط فرمان می‌پذیرد - اگر هیچ فایلی مشخص نشود، ssh-keygen داده‌های ارائه‌شده در ورودی استاندارد را امضا خواهد کرد. امضاها در مسیر فایل ورودی با افزودن “.sig” نوشته می‌شوند، یا اگر پیامی که باید امضا شود از ورودی استاندارد خوانده شده باشد، در خروجی استاندارد نوشته خواهند شد.

کلید مورد استفاده برای امضا با استفاده از گزینهٔ -f مشخص می‌شود و می‌تواند به یک کلید خصوصی یا به یک کلید عمومی که نیمهٔ خصوصی آن از طریق ssh-agent(1) در دسترس است اشاره داشته باشد. یک فضای نام امضای اضافی، که برای جلوگیری از سردرگمی امضا میان دامنه‌های مختلف کاربرد (مثلاً امضای فایل در برابر امضای ایمیل) به کار می‌رود، باید از طریق فلگ -n ارائه شود. فضاهای نام رشته‌های دلخواهی هستند و می‌توانند شامل موارد زیر باشند: “file” برای امضای فایل، “email” برای امضای ایمیل. برای کاربردهای سفارشی، توصیه می‌شود از نام‌هایی پیروی‌کننده از الگوی NAMESPACE@YOUR.DOMAIN استفاده شود تا فضاهای نامی بدون ابهام تولید گردند.

verify
درخواست برای اعتبارسنجی امضایی که با استفاده از ssh-keygen -Y sign همان‌طور که در بالا شرح داده شد تولید شده است. هنگام اعتبارسنجی یک امضا، ssh-keygen یک پیام را در ورودی استاندارد و یک فضای نام امضا را با استفاده از -n می‌پذیرد. فایلی حاوی امضای متناظر نیز باید با استفاده از فلگ -s ارائه شود، همراه با هویت امضاکننده با استفاده از -I و فهرستی از امضاکنندگان مجاز از طریق فلگ -f. قالب فایل امضاکنندگان مجاز در بخش امضاکنندگان مجاز (ALLOWED SIGNERS) در زیر مستند شده است. فایلی حاوی کلیدهای باطل‌شده را می‌توان با استفاده از فلگ -r ارائه داد. فایل ابطال می‌تواند یک KRL یا فهرستی خط‌به‌خط از کلیدهای عمومی باشد. اعتبارسنجی موفقیت‌آمیز توسط یک امضاکنندهٔ مجاز با بازگرداندن وضعیت خروج صفر توسط ssh-keygen اعلام می‌شود.
این گزینه یک فایل با قالب خصوصی OpenSSH را می‌خواند و یک کلید عمومی OpenSSH را در خروجی استاندارد چاپ می‌کند.
cipher
رمزنگار مورد استفاده برای رمزگذاری را هنگام نوشتن یک فایل کلید خصوصی در قالب OpenSSH مشخص می‌کند. فهرست رمزنگارهای موجود را می‌توان با استفاده از "ssh -Q cipher"; به دست آورد. مقدار پیش‌فرض “aes256-ctr” است.
serial_number
شماره سریالی را برای گنجاندن در گواهی مشخص می‌کند تا این گواهی را از سایر گواهی‌های صادرشده از همان CA متمایز سازد. اگر serial_number با یک نویسهٔ ‘+’ پیشوند شده باشد، آنگاه شماره سریال برای هر گواهی امضاشده در یک خط فرمان افزایش خواهد یافت. شماره سریال پیش‌فرض صفر است.

هنگام تولید یک KRL، فلگ -z برای مشخص کردن شماره نسخه KRL استفاده می‌شود.

ssh-keygen می‌تواند برای تولید گروه‌ها جهت پروتکل تبادل گروه دیفی-هلمن (DH-GEX) به کار رود. تولید این گروه‌ها یک فرایند دو مرحله‌ای است: ابتدا، اعداد اول کاندید با استفاده از یک فرایند سریع اما با مصرف حافظهٔ زیاد تولید می‌شوند. سپس این اعداد اول کاندید از نظر مناسب بودن مورد آزمایش قرار می‌گیرند (یک فرایند با مصرف پردازندهٔ زیاد).

تولید اعداد اول با استفاده از گزینهٔ -M generate انجام می‌شود. طول مورد نظر برای اعداد اول را می‌توان با گزینهٔ -O bits مشخص کرد. برای مثال:

# ssh-keygen -M generate -O bits=2048 moduli-2048.candidates

به‌طور پیش‌فرض، جستجو برای اعداد اول در یک نقطهٔ تصادفی در محدودهٔ طول مورد نظر آغاز می‌شود. این مورد را می‌توان با استفاده از گزینهٔ -O start بازنویسی کرد، که نقطه شروع متفاوتی را (به هگزادسیمال) مشخص می‌کند.

هنگامی که مجموعه‌ای از کاندیدها تولید شدند، باید از نظر مناسب بودن غربالگری شوند. این کار را می‌توان با استفاده از گزینهٔ -M screen انجام داد. در این حالت ssh-keygen کاندیدها را از ورودی استاندارد (یا یک فایل مشخص‌شده با استفاده از گزینهٔ -f) می‌خواند. برای مثال:

# ssh-keygen -M screen -f moduli-2048.candidates moduli-2048

به‌طور پیش‌فرض، هر کاندید تحت ۱۰۰ آزمایش اول بودن قرار خواهد گرفت. این مورد را می‌توان با استفاده از گزینهٔ -O prime-tests بازنویسی کرد. مقدار مولد DH به‌طور خودکار برای عدد اولِ تحت بررسی انتخاب خواهد شد. اگر یک مولد خاص مد نظر باشد، می‌توان آن را با استفاده از گزینهٔ -O generator درخواست کرد. مقادیر معتبر برای مولد ۲، ۳ و ۵ هستند.

گروه‌های DH غربالگری‌شده را می‌توان در /etc/ssh/moduli نصب کرد. مهم است که این فایل حاوی پیمانه‌هایی با بازه‌ای از طول‌های بیت مختلف باشد.

تعدادی گزینه برای تولید و غربالگری پیمانه‌ها از طریق فلگ -O در دسترس است:

=number
خروج پس از غربالگری تعداد خطوط مشخص‌شده در حین انجام غربالگری کاندیدهای DH.
=line-number
شروع غربالگری از شماره خط مشخص‌شده در حین انجام غربالگری کاندیدهای DH.
=filename
نوشتن آخرین خط پردازش‌شده در فایل مشخص‌شده در حین انجام غربالگری کاندیدهای DH. این قابلیت برای رد شدن از خطوطی در فایل ورودی که قبلاً پردازش شده‌اند، در صورتی که کار مجدداً راه‌اندازی شود، به کار می‌رود.
=hex-value
مشخص کردن نقطه شروع (به هگزادسیمال) هنگام تولید پیمانه‌های کاندید برای DH-GEX.
=value
مشخص کردن مولد مورد نظر (به دهدهی) هنگام آزمایش پیمانه‌های کاندید برای DH-GEX.

ssh-keygen از امضای کلیدها برای تولید گواهی‌هایی که می‌توانند برای احراز هویت کاربر یا میزبان استفاده شوند، پشتیبانی می‌کند. گواهی‌ها شامل یک کلید عمومی، مقداری اطلاعات هویتی، صفر یا چند نام کارگزار اصلی (کاربر یا میزبان) و مجموعه‌ای از گزینه‌ها هستند که توسط یک کلید مرجع صدور گواهی (CA) امضا شده‌اند. سپس کلاینت‌ها یا سرورها می‌توانند تنها به کلید CA اعتماد کنند و امضای آن را بر روی یک گواهی تأیید نمایند، به‌جای اینکه به کلیدهای متعدد کاربران/میزبان‌ها اعتماد ورزند. توجه داشته باشید که گواهی‌های OpenSSH قالبی متفاوت و بسیار ساده‌تر از گواهی‌های X.509 مورد استفاده در ssl(8) دارند.

ssh-keygen از دو نوع گواهی پشتیبانی می‌کند: کاربر و میزبان. گواهی‌های کاربر، کاربران را برای سرورها احراز هویت می‌کنند، در حالی که گواهی‌های میزبان، سرورهای میزبان را برای کاربران احراز هویت می‌نمایند. برای تولید یک گواهی کاربر:

$ ssh-keygen -s /path/to/ca_key -I id -n user \
      /path/to/user_key.pub

گواهی حاصل در /path/to/user_key-cert.pub قرار خواهد گرفت. آرگومان مربوط به -I یک شناسهٔ کلید است که در لاگ‌ها ثبت خواهد شد و می‌تواند برای ابطال کلیدها استفاده شود. آرگومان مربوط به -n یک یا چند کارگزار اصلی (جداشده با کاما)، معمولاً نام‌های کاربری، است که گواهی نشان‌دهندهٔ آن‌ها است. یک گواهی میزبان نیازمند گزینهٔ -h است:

$ ssh-keygen -s /path/to/ca_key -I id -h -n foo.example.org \
      /path/to/host_key.pub

برای گواهی‌های میزبان، کارگزاران اصلی مشخص‌شده با استفاده از آرگومان -n نام‌های میزبان هستند و می‌توانند شامل نویسه‌های عامه‌نما (wildcard) باشند.

گواهی میزبان در /path/to/host_key-cert.pub خروجی داده خواهد شد.

امکان امضا کردن با استفاده از یک کلید CA ذخیره‌شده در یک توکن PKCS#11 وجود دارد، با ارائهٔ کتابخانهٔ توکن با استفاده از -D و شناسایی کلید CA با ارائهٔ نیمهٔ عمومی آن به عنوان یک آرگومان به -s:

$ ssh-keygen -s ca_key.pub -D libpkcs11.so -I id -n user \
      user_key.pub

به‌طور مشابه، این امکان وجود دارد که کلید CA در یک ssh-agent(1) میزبانی شده باشد. این مورد با فلگ -U مشخص می‌شود و مجدداً، کلید CA باید با نیمهٔ عمومی آن شناسایی گردد.

$ ssh-keygen -Us ca_key.pub -I id -n user user_key.pub

در همهٔ موارد، key_id یک "شناسه کلید" است که توسط سرور هنگام استفاده از گواهی برای احراز هویت ثبت می‌شود.

گواهی‌ها محدود به معتبر بودن برای مجموعه‌ای از نام‌های کارگزاران اصلی (کاربر/میزبان) هستند. برای تولید یک گواهی برای مجموعه‌ای مشخص از کارگزاران اصلی:

$ ssh-keygen -s ca_key -I id -n user1,user2 user_key.pub
$ ssh-keygen -s ca_key -I id -h -n host.domain host_key.pub

محدودیت‌های اضافی بر اعتبار و استفاده از گواهی‌های کاربر را می‌توان از طریق گزینه‌های گواهی مشخص کرد. یک گزینهٔ گواهی ممکن است ویژگی‌هایی از نشست SSH را غیرفعال کند، تنها در صورت ارائه از نشانی‌های مبدأ خاصی معتبر باشد یا استفاده از یک دستور خاص را اجباری نماید.

گزینه‌هایی که برای گواهی‌های کاربر معتبر هستند عبارتند از:

پاک کردن تمامی مجوزهای فعال‌شده. این ویژگی برای پاک کردن مجموعه مجوزهای پیش‌فرض مفید است تا بتوان مجوزها را به‌طور جداگانه اضافه کرد.
:name[=contents]
 
:name[=contents]
گنجاندن یک گزینهٔ بحرانی (critical option) یا افزونهٔ (extension) دلخواه در گواهی. نام name مشخص‌شده باید شامل یک پسوند دامنه باشد، مانند “name@example.com”. اگر contents مشخص شده باشد، به عنوان محتوای افزونه/گزینه به‌صورت یک رشته کدگذاری‌شده گنجانده می‌شود، در غیر این صورت افزونه/گزینه بدون هیچ محتوایی ایجاد می‌گردد (که معمولاً نشان‌دهندهٔ یک فلگ است). افزونه‌ها ممکن است توسط یک کلاینت یا سرور که آن‌ها را نمی‌شناسد نادیده گرفته شوند، در حالی که گزینه‌های بحرانی ناشناخته باعث رد شدن گواهی خواهند شد.
=command
اجبار اجرای command به‌جای هر پوسته یا دستور مشخص‌شده توسط کاربر هنگام استفاده از گواهی برای احراز هویت.
غیرفعال کردن فورواردینگ ssh-agent(1) (به‌طور پیش‌فرض مجاز است).
غیرفعال کردن فورواردینگ پورت (به‌طور پیش‌فرض مجاز است).
غیرفعال کردن تخصیص PTY (به‌طور پیش‌فرض مجاز است).
غیرفعال کردن اجرای ~/.ssh/rc توسط sshd(8) (به‌طور پیش‌فرض مجاز است).
غیرفعال کردن فورواردینگ X11 (به‌طور پیش‌فرض مجاز است).
اجازه دادن به فورواردینگ ssh-agent(1).
اجازه دادن به فورواردینگ پورت.
اجازه دادن به تخصیص PTY.
اجازه دادن به اجرای ~/.ssh/rc توسط sshd(8).
اجازه دادن به فورواردینگ X11.
عدم الزام به اینکه امضاهای ساخته‌شده با استفاده از این کلید شامل اثبات حضور کاربر باشند (مثلاً با لمس کردن احراز هویت‌کننده توسط کاربر). این گزینه تنها برای الگوریتم‌های احراز هویت‌کنندهٔ FIDO شامل ecdsa-sk و ed25519-sk کاربرد دارد.
=address_list
محدود کردن نشانی‌های مبدأیی که گواهی از آن‌ها معتبر تلقی می‌شود. address_list فهرستی جداشده با کاما از یک یا چند جفت نشانی/ماسک شبکه در قالب CIDR است.
الزام به اینکه امضاهای ساخته‌شده با استفاده از این کلید نشان دهند هویت کاربر ابتدا تایید شده است، مثلاً با پین یا بیومتریک روی توکن. این گزینه تنها برای الگوریتم‌های احراز هویت‌کنندهٔ FIDO شامل ecdsa-sk و ed25519-sk کاربرد دارد.

در حال حاضر، هیچ گزینهٔ استانداردی برای کلیدهای میزبان معتبر نیست.

در نهایت، گواهی‌ها را می‌توان با طول عمر اعتبار تعریف کرد. گزینهٔ -V امکان تعیین زمان‌های شروع و پایان گواهی را فراهم می‌سازد. گواهی‌ای که در زمانی خارج از این بازه ارائه شود، معتبر تلقی نخواهد شد. به‌طور پیش‌فرض، گواهی‌ها از مبدأ زمان UNIX تا آینده‌ای دور معتبر هستند.

برای اینکه گواهی‌ها جهت احراز هویت کاربر یا میزبان استفاده شوند، کلید عمومی CA باید مورد اعتماد sshd(8) یا ssh(1) باشد. برای جزئیات بیشتر به آن صفحات راهنما مراجعه فرمایید.

ssh-keygen قادر به تولید کلیدهای مبتنی بر احراز هویت‌کنندهٔ FIDO است، که پس از آن تا زمانی که احراز هویت‌کنندهٔ سخت‌افزاری هنگام استفاده از کلیدها متصل باشد، می‌توان از آن‌ها درست مانند هر نوع کلید دیگری که توسط OpenSSH پشتیبانی می‌شود استفاده نمود. احراز هویت‌کننده‌های FIDO عموماً از کاربر می‌خواهند که با لمس یا ضربه زدن روی آن‌ها، عملیات را به‌طور صریح مجاز کند. کلیدهای FIDO از دو بخش تشکیل شده‌اند: یک بخش دستگیرهٔ کلید (key handle) که در فایل کلید خصوصی روی دیسک ذخیره می‌شود، و یک کلید خصوصی به ازای هر دستگاه که مختص به هر احراز هویت‌کنندهٔ FIDO بوده و نمی‌توان آن را از سخت‌افزار احراز هویت‌کننده استخراج کرد. این دو بخش هنگام احراز هویت توسط سخت‌افزار ترکیب می‌شوند تا کلید واقعی را که برای امضای چالش‌های احراز هویت استفاده می‌شود استخراج کنند. انواع کلیدهای پشتیبانی‌شده عبارتند از ecdsa-sk و ed25519-sk.

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

بازنویسی رشتهٔ پیش‌فرض برنامه/مبدأ FIDO که برابر “ssh:” است. این مورد ممکن است هنگام تولید کلیدهای مقیمِ مخصوص میزبان یا دامنه مفید باشد. رشته برنامه مشخص‌شده باید با “ssh:” آغاز شود.
=path
مسیری را به یک رشتهٔ چالش مشخص می‌کند که در حین تولید کلید به احراز هویت‌کنندهٔ FIDO ارسال خواهد شد. رشتهٔ چالش ممکن است به عنوان بخشی از یک پروتکل خارج از باند (out-of-band) برای ثبت کلید استفاده شود (به‌طور پیش‌فرض یک چالش تصادفی استفاده می‌شود).
مشخص کردن صریح یک دستگاه fido(4) برای استفاده، به‌جای اینکه به میان‌افزار احراز هویت‌کننده اجازه داده شود یکی را انتخاب کند.
مشخص کردن اینکه کلید خصوصی تولیدشده هنگام ایجاد امضاها نیازی به رویدادهای لمس (حضور کاربر) نداشته باشد. توجه داشته باشید که sshd(8) به‌طور پیش‌فرض چنین امضاهایی را رد خواهد کرد، مگر اینکه از طریق یک گزینه در authorized_keys بازنویسی شده باشد.
مشخص کردن اینکه دستگیرهٔ کلید باید روی خود احراز هویت‌کنندهٔ FIDO ذخیره شود. این کار استفاده از احراز هویت‌کننده را روی چندین رایانه آسان‌تر می‌کند. کلیدهای مقیم (Resident keys) ممکن است در احراز هویت‌کننده‌های FIDO2 پشتیبانی شوند و معمولاً نیازمند این هستند که قبل از تولید، یک پین (PIN) روی احراز هویت‌کننده تنظیم شده باشد. کلیدهای مقیم را می‌توان با استفاده از ssh-add(1) از روی احراز هویت‌کننده بارگیری کرد. ذخیره کردن هر دو بخش یک کلید روی یک احراز هویت‌کنندهٔ FIDO، احتمال اینکه یک مهاجم بتواند از یک دستگاه احراز هویت‌کنندهٔ سرقت‌شده استفاده کند را افزایش می‌دهد.
یک نام کاربری برای مرتبط شدن با یک کلید مقیم، که نام کاربری پیش‌فرضِ خالی را بازنویسی می‌کند. تعیین یک نام کاربری ممکن است هنگام تولید چندین کلید مقیم برای یک نام برنامه یکسان مفید باشد.
مشخص کردن اینکه این کلید خصوصی برای هر امضا نیازمند تایید هویت کاربر باشد. همهٔ احراز هویت‌کننده‌های FIDO از این گزینه پشتیبانی نمی‌کنند. در حال حاضر احراز هویت با پین (PIN) تنها روش تایید هویت پشتیبانی‌شده است، اما ممکن است در آینده روش‌های دیگری نیز پشتیبانی شوند.
=path
می‌تواند در زمان تولید کلید برای ثبت داده‌های تصدیق (attestation) بازگردانده‌شده از احراز هویت‌کننده‌های FIDO در حین تولید کلید استفاده شود. این اطلاعات بالقوه حساس هستند. به‌طور پیش‌فرض، این اطلاعات نادیده گرفته و دور ریخته می‌شوند.

ssh-keygen قادر به مدیریت فهرست‌های ابطال کلید (KRL) در قالب OpenSSH است. این فایل‌های دودویی، کلیدها یا گواهی‌هایی را که باید باطل شوند با استفاده از قالبی فشرده مشخص می‌کنند، که در صورت ابطال بر اساس شماره سریال، به اندازهٔ تنها یک بیت به ازای هر گواهی فضا می‌گیرند.

KRLها را می‌توان با استفاده از فلگ -k تولید کرد. این گزینه یک یا چند فایل را از خط فرمان می‌خواند و یک KRL جدید تولید می‌کند. این فایل‌ها می‌توانند حاوی یک مشخصات KRL (در زیر ببینید) یا کلیدهای عمومی باشند که در هر خط یکی فهرست شده است. کلیدهای عمومی ساده با فهرست کردن هش یا محتویات آن‌ها در KRL باطل می‌شوند و گواهی‌ها با شماره سریال یا شناسه کلید (اگر شماره سریال صفر باشد یا در دسترس نباشد) باطل می‌گردند.

ابطال کلیدها با استفاده از مشخصات KRL امکان کنترل دقیق بر انواع رکوردهای استفاده‌شده برای ابطال کلیدها را فراهم می‌کند و می‌تواند برای ابطال مستقیم گواهی‌ها بر اساس شماره سریال یا شناسه کلید بدون در دست داشتن گواهی اصلی کامل استفاده شود. یک مشخصات KRL شامل خطوطی است که حاوی یکی از دستورالعمل‌های زیر بوده و به دنبال آن یک دونقطه و مقداری اطلاعات ویژهٔ آن دستورالعمل قرار دارد.

: serial_number[-serial_number]
یک گواهی با شماره سریال مشخص‌شده را باطل می‌کند. شماره سریال‌ها مقادیر ۶۴ بیتی بدون احتساب صفر هستند و می‌توانند به صورت دهدهی، هگزادسیمال یا هشت‌هشتی (اکتال) بیان شوند. اگر دو شماره سریال جداشده با خط تیره مشخص شوند، محدودهٔ شماره سریال‌ها شامل و میان هر دو باطل می‌شود. کلید CA باید در خط فرمان ssh-keygen با استفاده از گزینهٔ -s مشخص شده باشد.
: key_id
یک گواهی با رشته شناسه کلید (key ID) مشخص‌شده را باطل می‌کند. کلید CA باید در خط فرمان ssh-keygen با استفاده از گزینهٔ -s مشخص شده باشد.
: public_key
کلید مشخص‌شده را باطل می‌کند. اگر یک گواهی فهرست شده باشد، به عنوان یک کلید عمومی ساده باطل می‌گردد.
: public_key
کلید مشخص‌شده را با گنجاندن هش SHA1 آن در KRL باطل می‌کند.
: public_key
کلید مشخص‌شده را با گنجاندن هش SHA256 آن در KRL باطل می‌کند. KRLهایی که کلیدها را بر اساس هش SHA256 باطل می‌کنند در نسخه‌های OpenSSH پیش از ۷.۹ پشتیبانی نمی‌شوند.
: fingerprint
یک کلید را با استفاده از اثرانگشت هش‌شده باطل می‌کند، همان‌طور که از یک پیام لاگ احراز هویت sshd(8) یا فلگ -l در ssh-keygen به دست می‌آید. در اینجا تنها اثرانگشت‌های SHA256 پشتیبانی می‌شوند و KRLهای حاصل در نسخه‌های OpenSSH پیش از ۷.۹ پشتیبانی نمی‌شوند.

KRLها را می‌توان با استفاده از فلگ -u علاوه بر -k به‌روزرسانی کرد. هنگامی که این گزینه مشخص شود، کلیدهای فهرست‌شده از طریق خط فرمان در KRL ادغام شده و به کلیدهای موجود در آن افزوده می‌شوند.

همچنین این امکان وجود دارد که با داشتن یک KRL، بررسی شود که آیا یک کلید (یا کلیدهای) خاص را باطل می‌کند یا خیر. فلگ -Q یک KRL موجود را مورد پرس‌وجو قرار می‌دهد و هر کلید مشخص‌شده در خط فرمان را آزمایش می‌کند. اگر هر کلید فهرست‌شده در خط فرمان باطل شده باشد (یا خطایی رخ دهد)، آنگاه ssh-keygen با وضعیت خروج غیرصفر خارج خواهد شد. وضعیت خروج صفر تنها در صورتی بازگردانده می‌شود که هیچ کلیدی باطل نشده باشد.

هنگام اعتبارسنجی امضاها، ssh-keygen از فهرستی ساده از هویت‌ها و کلیدها استفاده می‌کند تا تعیین کند آیا یک امضا از منبعی مجاز آمده است یا خیر. این فایل "امضاکنندگان مجاز" (allowed signers) از قالبی الگوبرداری‌شده از قالب فایل AUTHORIZED_KEYS شرح داده شده در sshd(8) استفاده می‌کند. هر خط از فایل شامل فیلدهای زیر است که با فاصله از هم جدا شده‌اند: کارگزاران اصلی (principals)، گزینه‌ها (options)، نوع کلید (keytype)، کلید کدگذاری‌شده با base64. خطوط خالی و خطوطی که با ‘#’ شروع می‌شوند به عنوان یادداشت (کامنت) نادیده گرفته می‌شوند.

فیلد کارگزاران اصلی یک فهرست الگو (الگوها (PATTERNS) در ssh_config(5) را ببینید) شامل یک یا چند الگوی هویتی USER@DOMAIN جداشده با کاما است که برای امضا پذیرفته می‌شوند. هنگام اعتبارسنجی، هویت ارائه‌شده از طریق گزینهٔ -I باید با یک الگوی کارگزاران اصلی مطابقت داشته باشد تا کلید متناظر برای اعتبارسنجی قابل قبول دانسته شود.

گزینه‌ها (در صورت وجود) از مشخصات گزینه‌های جداشده با کاما تشکیل شده‌اند. هیچ فاصله‌ای مجاز نیست، مگر در داخل نقل‌قول دوگانه (double quotes). مشخصات گزینه‌های زیر پشتیبانی می‌شوند (توجه داشته باشید که کلمات کلیدی گزینه‌ها به بزرگی و کوچکی حروف حساس نیستند):

نشان می‌دهد که این کلید به عنوان یک مرجع صدور گواهی (CA) پذیرفته شده است و گواهی‌های امضاشده توسط این CA ممکن است برای اعتبارسنجی پذیرفته شوند.
=namespace-list
یک فهرست الگو از فضاهای نامی که برای این کلید پذیرفته می‌شوند را مشخص می‌کند. اگر این گزینه وجود داشته باشد، فضای نام امضای گنجانده‌شده در شیء امضا و ارائه‌شده در خط فرمان اعتبارسنجی باید پیش از اینکه کلید قابل قبول در نظر گرفته شود، با فهرست مشخص‌شده مطابقت داشته باشد.
=timestamp
نشان می‌دهد که کلید برای استفاده در برچسب زمانی مشخص‌شده یا پس از آن معتبر است، که ممکن است یک تاریخ یا زمان در قالب‌های YYYYMMDD[Z] یا YYYYMMDDHHMM[SS][Z] باشد. تاریخ‌ها و زمان‌ها در منطقه زمانی فعلی سیستم تفسیر خواهند شد مگر اینکه با یک نویسهٔ Z خاتمه یابند، که باعث می‌شود در منطقه زمانی UTC تفسیر شوند.
=timestamp
نشان می‌دهد که کلید برای استفاده در برچسب زمانی مشخص‌شده یا پیش از آن معتبر است.

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

یک نمونه فایل امضاکنندگان مجاز:

# Comments allowed at start of line
user1@example.com,user2@example.com ssh-rsa AAAAX1...
# A certificate authority, trusted for all principals in a domain.
*@example.com cert-authority ssh-ed25519 AAAB4...
# A key that is accepted only for file signing.
user2@example.com namespaces="file" ssh-ed25519 AAA41...

مسیری را به یک کتابخانه مشخص می‌کند که هنگام بارگیری هرگونه کلید میزبانی‌شده روی احراز هویت‌کنندهٔ FIDO استفاده خواهد شد و حالت پیش‌فرضِ استفاده از پشتیبانی توکار USB HID را بازنویسی می‌کند.

~/.ssh/id_ecdsa
 
~/.ssh/id_ecdsa_sk
 
~/.ssh/id_ed25519
 
~/.ssh/id_ed25519_sk
 
~/.ssh/id_mldsa44_ed25519
 
~/.ssh/id_rsa
حاوی هویت احراز هویت کاربر از نوع ECDSA، ECDSA میزبانی‌شده روی احراز هویت‌کننده، Ed25519، Ed25519 میزبانی‌شده روی احراز هویت‌کننده یا RSA است. این فایل نباید توسط هیچ‌کس به‌جز کاربر قابل خواندن باشد. امکان تعیین یک عبارت عبور هنگام تولید کلید وجود دارد؛ آن عبارت عبور برای رمزگذاری بخش خصوصی این فایل با استفاده از AES با کلید ۱۲۸ بیتی به کار خواهد رفت. این فایل به‌طور خودکار توسط ssh-keygen دسترسی پیدا نمی‌شود، اما به عنوان فایل پیش‌فرض برای کلید خصوصی پیشنهاد می‌گردد. ssh(1) هنگام تلاش برای ورود، این فایل را خواهد خواند.
~/.ssh/id_ecdsa.pub
 
~/.ssh/id_ecdsa_sk.pub
 
~/.ssh/id_ed25519.pub
 
~/.ssh/id_ed25519_sk.pub
 
~/.ssh/id_mldsa44_ed25519.pub
 
~/.ssh/id_rsa.pub
حاوی کلید عمومی احراز هویت از نوع ECDSA، ECDSA میزبانی‌شده روی احراز هویت‌کننده، Ed25519، Ed25519 میزبانی‌شده روی احراز هویت‌کننده یا RSA است. محتویات این فایل باید در تمامی ماشین‌هایی که کاربر مایل است با استفاده از احراز هویت کلید عمومی به آن‌ها وارد شود، به ~/.ssh/authorized_keys اضافه شود. هیچ نیازی به مخفی نگه داشتن محتویات این فایل وجود ندارد.
/etc/ssh/moduli
حاوی گروه‌های دیفی-هلمن مورد استفاده برای DH-GEX است. قالب فایل در moduli(5) شرح داده شده است.

ssh(1), ssh-add(1), ssh-agent(1), moduli(5), sshd(8) The Secure Shell (SSH) Public Key File Format, RFC 4716, 2006.

پروژهٔ OpenSSH اشتقاقی از انتشار اولیه و رایگان ssh 1.2.12 توسط Tatu Ylonen است. Aaron Campbell، Bob Beck، Markus Friedl، Niels Provos، Theo de Raadt و Dug Song باگ‌های بسیاری را رفع کردند، ویژگی‌های جدیدتر را مجدداً اضافه نمودند و OpenSSH را پدید آوردند. Markus Friedl پشتیبانی از نسخه‌های ۱.۵ و ۲.۰ پروتکل SSH را توسعه داد.

August 7, 2026 Linux 6.12.107+deb13-amd64