| SSH-KEYGEN(1) | General Commands Manual | SSH-KEYGEN(1) |
نام (NAME)
ssh-keygen —
ابزار
تولید،
مدیریت و
تبدیل
کلیدهای
احراز هویت
در OpenSSH
خلاصه دستور (SYNOPSIS)
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]
توضیحات (DESCRIPTION)
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
خواهد
پرسید که
کلیدها
برای
فعالسازی
باید در کجا
قرار
گیرند.
گزینهها به شرح زیر هستند:
-A- تولید
کلیدهای
میزبان از
تمامی
انواع
کلیدهای
پیشفرض (rsa،
ecdsa، mldsa44-ed25519 و ed25519) در
صورتی که از
قبل وجود
نداشته
باشند.
کلیدهای
میزبان با
مسیر
پیشفرض
فایل کلید،
یک عبارت
عبور خالی،
تعداد
بیتهای
پیشفرض
برای نوع
کلید و
یادداشت
پیشفرض
تولید
میشوند.
اگر گزینهٔ
-fنیز مشخص شده باشد، آرگومان آن به عنوان یک پیشوند برای مسیر پیشفرض فایلهای کلید میزبان حاصل به کار میرود. این ویژگی توسط /etc/rc جهت تولید کلیدهای میزبان جدید استفاده میشود. -arounds- هنگام ذخیره کردن یک کلید خصوصی، این گزینه تعداد دورهای KDF (تابع مشتقگیری کلید، در حال حاضر bcrypt_pbkdf(3)) مورد استفاده را مشخص میکند. اعداد بزرگتر منجر به کندتر شدن اعتبارسنجی عبارت عبور و افزایش مقاومت در برابر شکستن گذرواژه با جستجوی فراگیر (در صورتی که کلیدها به سرقت بروند) میشوند. مقدار پیشفرض ۱۶ دور است.
-B- نمایش خلاصه bubblebabble از فایل کلید خصوصی یا عمومی مشخصشده.
-bbits- تعداد
بیتهای
کلید مورد
نظر برای
ساخت را
مشخص
میکند.
برای
کلیدهای RSA،
حداقل
اندازه
۱۰۲۴ بیت و
مقدار
پیشفرض
۳۰۷۲ بیت
است. بهطور
کلی، ۳۰۷۲
بیت کافی در
نظر گرفته
میشود.
برای
کلیدهای ECDSA،
فلگ
-bطول کلید را با انتخاب یکی از سه اندازه منحنی بیضوی تعیین میکند: ۲۵۶، ۳۸۴ یا ۵۲۱ بیت. تلاش برای استفاده از طول بیتهایی غیر از این سه مقدار برای کلیدهای ECDSA با شکست مواجه خواهد شد. کلیدهای ECDSA-SK، Ed25519 و Ed25519-SK دارای طول ثابتی هستند و فلگ-bنادیده گرفته خواهد شد. -Ccomment- یک یادداشت جدید ارائه میدهد.
-c- درخواست تغییر یادداشت در فایلهای کلید خصوصی و عمومی. برنامه فایل حاوی کلیدهای خصوصی، عبارت عبور در صورت وجود برای کلید، و یادداشت جدید را درخواست خواهد کرد.
-Dpkcs11- بارگیری
کلیدهای
عمومی
ارائهشده
توسط
کتابخانهٔ
مشترک PKCS#11 به
نام pkcs11.
هنگامی که
همراه با
-sاستفاده شود، این گزینه نشان میدهد که یک کلید CA در یک توکن PKCS#11 قرار دارد (برای جزئیات بیشتر به بخش گواهیها (CERTIFICATES) مراجعه کنید). -Efingerprint_hash- الگوریتم درهمسازی مورد استفاده هنگام نمایش اثرانگشت کلید را مشخص میکند. گزینههای معتبر عبارتند از: “md5” و “sha256”. مقدار پیشفرض “sha256” است.
-e- این گزینه
یک فایل
کلید خصوصی
یا عمومی OpenSSH
را
میخواند و
یک کلید
عمومی را در
یکی از
قالبهای
مشخصشده
توسط
گزینهٔ
-mدر خروجی استاندارد چاپ میکند. قالب صادرات پیشفرض “RFC4716” است. این گزینه امکان صادر کردن کلیدهای OpenSSH را برای استفاده توسط سایر برنامهها، از جمله چندین پیادهسازی تجاری SSH فراهم میسازد. -Fhostname | [hostname]:port- جستجو برای
hostname
مشخصشده
(همراه با
شماره پورت
اختیاری) در
یک فایل
known_hosts ، و
فهرست کردن
تمامی
موارد
یافتشده.
این گزینه
برای یافتن
نامها یا
نشانیهای
میزبان
درهمسازیشده
(هششده)
مفید است و
همچنین
میتواند
همراه با
گزینهٔ
-Hبرای چاپ کلیدهای یافتشده در قالب هششده استفاده شود. -ffilename- نام پروندهٔ فایل کلید را مشخص میکند.
-g- استفاده از
قالب عمومی
DNS هنگام چاپ
رکوردهای
منبع
اثرانگشت
با استفاده
از دستور
-r. -H- درهمسازی
(هش کردن) یک
فایل known_hosts.
این کار
تمام
نامهای
میزبان و
نشانیها
را در فایل
مشخصشده
با
نمایشهای
هششده
جایگزین
میکند؛
محتوای
اصلی به
فایلی با
پسوند old.
منتقل
میشود. این
هشها
میتوانند
بهطور
عادی توسط
sshوsshdاستفاده شوند، اما در صورت افشای محتوای فایل، اطلاعات هویتی را آشکار نمیسازند. این گزینه نامهای میزبان هششدهٔ موجود را تغییر نمیدهد و بنابراین استفاده از آن روی فایلهایی که نامهای هششده و غیرهششده را ترکیب کردهاند بیخطر است. -h- هنگام امضای یک کلید، بهجای گواهی کاربر یک گواهی میزبان ایجاد میکند. برای جزئیات بیشتر به بخش گواهیها (CERTIFICATES) مراجعه کنید.
-Icertificate_identity- هویت کلید را هنگام امضای یک کلید عمومی مشخص میکند. برای جزئیات بیشتر به بخش گواهیها (CERTIFICATES) مراجعه کنید.
-i- این گزینه
یک فایل
کلید خصوصی
(یا عمومی)
رمزگذارینشده
را در قالب
مشخصشده
توسط
گزینهٔ
-mمیخواند و یک کلید خصوصی (یا عمومی) سازگار با OpenSSH را در خروجی استاندارد چاپ میکند. این گزینه امکان وارد کردن کلیدها از سایر نرمافزارها، از جمله چندین پیادهسازی تجاری SSH را فراهم میسازد. قالب واردات پیشفرض “RFC4716” است. -K- بارگیری کلیدهای مقیم (resident keys) از یک احراز هویتکنندهٔ FIDO. فایلهای کلید عمومی و خصوصی برای هر کلید بارگیریشده در دایرکتوری جاری نوشته خواهند شد. اگر چندین احراز هویتکنندهٔ FIDO متصل باشند، کلیدها از اولین احراز هویتکنندهای که لمس شود بارگیری خواهند شد. برای اطلاعات بیشتر به بخش احراز هویتکننده فیدو (FIDO AUTHENTICATOR) مراجعه فرمایید.
-k- تولید یک
فایل KRL
(فهرست
ابطال
کلید). در
این حالت،
ssh-keygenیک فایل KRL در مسیر مشخصشده از طریق فلگ-fتولید میکند که هر کلید یا گواهی ارائهشده در خط فرمان را باطل میسازد. کلیدها/گواهیهایی که باید باطل شوند را میتوان با فایل کلید عمومی یا با استفاده از قالب شرحدادهشده در بخش فهرستهای ابطال کلید (KEY REVOCATION LISTS) مشخص کرد. -L- محتویات یک یا چند گواهی را چاپ میکند.
-l- نمایش
اثرانگشت
فایل کلید
عمومی
مشخصشده.
ssh-keygenتلاش خواهد کرد تا فایل کلید عمومی منطبق را پیدا کرده و اثرانگشت آن را چاپ کند. اگر با-vترکیب شود، یک نمایش بصری اسکیآرت (ASCII art) از کلید به همراه اثرانگشت ارائه میشود. -Mgenerate- تولید پارامترهای کاندید تبادل گروه دیفی-هلمن (DH-GEX) جهت استفادهٔ نهایی توسط روشهای تبادل کلید ‘diffie-hellman-group-exchange-*’. اعداد تولیدشده با این عملیات باید قبل از استفاده بیشتر غربالگری شوند. برای اطلاعات بیشتر به بخش تولید پیمانهها (MODULI GENERATION) مراجعه فرمایید.
-Mscreen- غربالگری پارامترهای کاندید برای تبادل گروه دیفی-هلمن. این عمل فهرستی از اعداد کاندید را میپذیرد و آزمایش میکند که آیا آنها اعداد اول ایمن (Sophie Germain) با مولدهای گروه قابل قبول هستند یا خیر. نتایج این عملیات را میتوان به فایل /etc/ssh/moduli افزود. برای اطلاعات بیشتر به بخش تولید پیمانهها (MODULI GENERATION) مراجعه کنید.
-mkey_format- مشخص کردن
یک قالب
کلید برای
تولید
کلید،
گزینههای
تبدیل
-i(وارد کردن)،-e(صادر کردن)، و عملیات تغییر عبارت عبور با-p. مورد اخیر میتواند برای تبدیل میان قالبهای کلید خصوصی OpenSSH و PEM استفاده شود. قالبهای کلید پشتیبانیشده عبارتند از: “RFC4716” (کلید عمومی یا خصوصی RFC 4716/SSH2)، “PKCS8” (کلید عمومی یا خصوصی PKCS8) یا “PEM” (کلید عمومی PEM). بهطور پیشفرض OpenSSH کلیدهای خصوصی تازهتولیدشده را در قالب اختصاصی خود ذخیره میکند، اما هنگام تبدیل کلیدهای عمومی برای صدور، قالب پیشفرض “RFC4716” است. تنظیم قالب روی “PEM” هنگام تولید یا بهروزرسانی نوع کلید خصوصی پشتیبانیشده باعث میشود که کلید در قالب قدیمی کلید خصوصی PEM ذخیره شود. -Nnew_passphrase- عبارت عبور جدید را ارائه میدهد.
-nprincipals- یک یا چند کارگزار اصلی (نامهای کاربری یا نامهای میزبان) را برای گنجاندن در گواهی هنگام امضای یک کلید مشخص میکند. میتوان چندین کارگزار اصلی را جداشده با کاما مشخص کرد. برای جزئیات بیشتر به بخش گواهیها (CERTIFICATES) مراجعه کنید.
-Ooption- یک گزینهٔ
کلید/مقدار
را مشخص
میکند. این
گزینهها
مختص به
عملیاتی
هستند که از
ssh-keygenدرخواست شده است انجام دهد.هنگام امضای گواهیها، یکی از گزینههای فهرستشده در بخش گواهیها (CERTIFICATES) را میتوان در اینجا مشخص کرد.
هنگام انجام تولید یا غربالگری پیمانهها، یکی از گزینههای فهرستشده در بخش تولید پیمانهها (MODULI GENERATION) را میتوان تعیین کرد.
هنگام تولید کلیدهای مبتنی بر احراز هویتکنندهٔ FIDO، گزینههای فهرستشده در بخش احراز هویتکننده فیدو (FIDO AUTHENTICATOR) را میتوان مشخص نمود.
هنگام تغییر عبارت عبور برای یک کلید موجود، گزینههای فهرستشده در مستندات مربوط به فلگ
-pمیتوانند استفاده شوند.هنگام انجام گزینههای مربوط به امضا با استفاده از فلگ
-Y-،گزینههای زیر پذیرفته میشوند:hashalg=algorithm- الگوریتم درهمسازی را برای هش کردن پیامی که باید امضا شود انتخاب میکند. الگوریتمهای معتبر عبارتند از “sha256” و “sha512”. مقدار پیشفرض “sha512” است.
print-pubkey- چاپ کامل کلید عمومی در خروجی استاندارد پس از اعتبارسنجی امضا.
verify-time=timestamp- زمانی را برای استفاده هنگام اعتبارسنجی امضاها بهجای زمان جاری مشخص میکند. زمان را میتوان به عنوان یک تاریخ یا زمان در قالبهای YYYYMMDD[Z] یا YYYYMMDDHHMM[SS][Z] مشخص نمود. تاریخها و زمانها در منطقهٔ زمانی جاری سیستم تفسیر خواهند شد مگر اینکه با یک نویسهٔ Z خاتمه یابند، که باعث میشود در منطقهٔ زمانی UTC تفسیر شوند.
هنگام تولید رکوردهای SSHFP DNS از کلیدهای عمومی با استفاده از فلگ
-r-،گزینههای زیر پذیرفته میشوند:hashalg=algorithm- انتخاب یک
الگوریتم
درهمسازی
برای
استفاده
هنگام چاپ
رکوردهای SSHFP
با
استفاده
از فلگ
-D. الگوریتمهای معتبر عبارتند از “sha1” و “sha256”. حالت پیشفرض چاپ هر دو است.
گزینهٔ
-Oرا میتوان چندین بار مشخص کرد. -Ppassphrase- عبارت عبور (قدیمی) را ارائه میدهد.
-p- درخواست
تغییر
عبارت عبور
یک فایل
کلید خصوصی
بهجای
ایجاد یک
کلید خصوصی
جدید.
برنامه
فایل حاوی
کلید
خصوصی،
عبارت عبور
قدیمی، و دو
بار عبارت
عبور جدید
را درخواست
خواهد کرد.
بهروزرسانی عبارت عبور باعث میشود کلیدهای رمزگذاریشده مجدداً رمزگذاری شوند، که امکان تغییر الگوریتم رمزنگار و/یا تعداد دورهای KDF (به ترتیب گزینههای
-Zو-a) را فراهم میسازد.این گزینه همچنین میتواند برای تنظیم یا پاک کردن گزینههای مرتبط با FIDO از طریق فلگ
-Oاستفاده شود. گزینههای FIDO زیر قابل تغییر هستند:touch-requiredno-touch-required- افزودن یا حذف این شرط که امضاهای ایجادشده با استفاده از این کلید شامل اثبات حضور کاربر باشند (مثلاً با لمس کردن احراز هویتکننده توسط کاربر).
verify-requiredno-verify-required- افزودن یا حذف این شرط که امضاهای ایجادشده با استفاده از این کلید ابتدا هویت کاربر را تایید نمایند، مثلاً با پین (PIN) یا بیومتریک روی توکن.
-Q- بررسی
اینکه آیا
کلیدها در
یک KRL باطل
شدهاند یا
خیر. اگر
گزینهٔ
-lنیز مشخص شده باشد، آنگاه محتویات KRL چاپ خواهد شد. -q- حالت
بیصدا
برای
ssh-keygen. -Rhostname | [hostname]:port- حذف تمامی
کلیدهای
متعلق به
hostname
مشخصشده
(همراه با
شماره پورت
اختیاری) از
یک فایل
known_hosts. این
گزینه برای
حذف
میزبانهای
هششده
مفید است
(گزینهٔ
-Hدر بالا را ببینید). -rhostname- چاپ رکورد منبع اثرانگشت SSHFP به نام hostname برای فایل کلید عمومی مشخصشده.
-sca_key- گواهی کردن
(امضا کردن)
یک کلید
عمومی با
استفاده از
کلید CA
مشخصشده.
برای
جزئیات
بیشتر به
بخش
گواهیها
(CERTIFICATES) مراجعه
فرمایید.
هنگام تولید یک KRL، فلگ
-sمسیری را به یک فایل کلید عمومی CA مشخص میکند که برای ابطال مستقیم گواهیها با شناسه کلید یا شماره سریال استفاده میشود. برای جزئیات بیشتر به بخش فهرستهای ابطال کلید (KEY REVOCATION LISTS) مراجعه فرمایید. -tecdsa|ecdsa-sk|ed25519|ed25519-sk|mldsa44-ed25519|rsa- نوع کلید
مورد نظر
برای ساخت
را مشخص
میکند.
مقادیر
ممکن
عبارتند از
“ecdsa ،” “ecdsa-sk ،”
“ed25519”
(پیشفرض)،
“ed25519-sk ،” “mldsa44-ed25519”
یا “rsa”.
این فلگ همچنین میتواند برای مشخص کردن نوع امضای مورد نظر هنگام امضای گواهیها با استفاده از یک کلید CA از نوع RSA استفاده شود. انواع امضای RSA موجود عبارتند از “ssh-rsa” (امضاهای SHA1، توصیه نمیشود)، “rsa-sha2-256” و “rsa-sha2-512” (پیشفرض برای کلیدهای RSA).
-U- هنگامی که
در ترکیب با
-sیا-Ysignاستفاده شود، این گزینه نشان میدهد که یک کلید CA در یک ssh-agent(1) قرار دارد. برای اطلاعات بیشتر به بخش گواهیها (CERTIFICATES) مراجعه نمایید. -u- بهروزرسانی
یک KRL. هنگامی
که همراه با
-kمشخص شود، کلیدهای فهرستشده از طریق خط فرمان بهجای ساخته شدن یک KRL جدید، به KRL موجود افزوده میشوند. -Vvalidity_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
- معتبر از یک دقیقه قبل و بدون انقضا.
-v- حالت پرحرف
(verbose). باعث
میشود
ssh-keygenپیامهای اشکالزدایی دربارهٔ پیشرفت خود چاپ کند. این برای اشکالزدایی تولید پیمانهها مفید است. استفادهٔ چندباره از گزینهٔ-vمیزان جزئیات را افزایش میدهد. حداکثر مقدار ۳ است. -wprovider- مسیری را به یک کتابخانه مشخص میکند که هنگام ساخت کلیدهای میزبانیشده روی احراز هویتکنندهٔ FIDO استفاده خواهد شد، و حالت پیشفرضِ استفاده از پشتیبانی توکار USB HID را بازنویسی میکند.
-Yfind-principals- یافتن
کارگزار(های)
اصلی مرتبط
با کلید
عمومی یک
امضا،
ارائهشده
با استفاده
از فلگ
-sدر یک فایل امضاکنندگان مجاز ارائهشده با استفاده از فلگ-f. قالب فایل امضاکنندگان مجاز در بخش امضاکنندگان مجاز (ALLOWED SIGNERS) در زیر مستند شده است. اگر یک یا چند کارگزار اصلی منطبق یافت شوند، در خروجی استاندارد بازگردانده میشوند. -Ymatch-principals- یافتن
کارگزار
اصلی منطبق
با نام
ارائهشده
با استفاده
از فلگ
-Iدر فایل امضاکنندگان مجاز مشخصشده با فلگ-f. اگر یک یا چند کارگزار اصلی منطبق یافت شوند، در خروجی استاندارد بازگردانده میشوند. -Ycheck-novalidate- بررسی
اینکه آیا
امضای
تولیدشده
با استفاده
از
ssh-keygen-Ysignدارای ساختاری معتبر است یا خیر. این گزینه اعتبارسنجی نمیکند که آیا امضا از طرف یک امضاکنندهٔ مجاز آمده است یا خیر. هنگام آزمایش یک امضا،ssh-keygenیک پیام را در ورودی استاندارد و یک فضای نام امضا را با استفاده از-nمیپذیرد. فایلی حاوی امضای متناظر نیز باید با استفاده از فلگ-sارائه شود. آزمایش موفقیتآمیز امضا با بازگرداندن وضعیت خروج صفر توسطssh-keygenاعلام میشود. -Ysign- امضای
رمزنگاریشدهٔ
یک فایل یا
مقداری
داده با
استفاده از
یک کلید SSH.
هنگام امضا
کردن،
ssh-keygenصفر یا چند فایل را برای امضا در خط فرمان میپذیرد - اگر هیچ فایلی مشخص نشود،ssh-keygenدادههای ارائهشده در ورودی استاندارد را امضا خواهد کرد. امضاها در مسیر فایل ورودی با افزودن “.sig” نوشته میشوند، یا اگر پیامی که باید امضا شود از ورودی استاندارد خوانده شده باشد، در خروجی استاندارد نوشته خواهند شد.کلید مورد استفاده برای امضا با استفاده از گزینهٔ
-fمشخص میشود و میتواند به یک کلید خصوصی یا به یک کلید عمومی که نیمهٔ خصوصی آن از طریق ssh-agent(1) در دسترس است اشاره داشته باشد. یک فضای نام امضای اضافی، که برای جلوگیری از سردرگمی امضا میان دامنههای مختلف کاربرد (مثلاً امضای فایل در برابر امضای ایمیل) به کار میرود، باید از طریق فلگ-nارائه شود. فضاهای نام رشتههای دلخواهی هستند و میتوانند شامل موارد زیر باشند: “file” برای امضای فایل، “email” برای امضای ایمیل. برای کاربردهای سفارشی، توصیه میشود از نامهایی پیرویکننده از الگوی NAMESPACE@YOUR.DOMAIN استفاده شود تا فضاهای نامی بدون ابهام تولید گردند. -Yverify- درخواست
برای
اعتبارسنجی
امضایی که
با استفاده
از
ssh-keygen-Ysignهمانطور که در بالا شرح داده شد تولید شده است. هنگام اعتبارسنجی یک امضا،ssh-keygenیک پیام را در ورودی استاندارد و یک فضای نام امضا را با استفاده از-nمیپذیرد. فایلی حاوی امضای متناظر نیز باید با استفاده از فلگ-sارائه شود، همراه با هویت امضاکننده با استفاده از-Iو فهرستی از امضاکنندگان مجاز از طریق فلگ-f. قالب فایل امضاکنندگان مجاز در بخش امضاکنندگان مجاز (ALLOWED SIGNERS) در زیر مستند شده است. فایلی حاوی کلیدهای باطلشده را میتوان با استفاده از فلگ-rارائه داد. فایل ابطال میتواند یک KRL یا فهرستی خطبهخط از کلیدهای عمومی باشد. اعتبارسنجی موفقیتآمیز توسط یک امضاکنندهٔ مجاز با بازگرداندن وضعیت خروج صفر توسطssh-keygenاعلام میشود. -y- این گزینه یک فایل با قالب خصوصی OpenSSH را میخواند و یک کلید عمومی OpenSSH را در خروجی استاندارد چاپ میکند.
-Zcipher- رمزنگار مورد استفاده برای رمزگذاری را هنگام نوشتن یک فایل کلید خصوصی در قالب OpenSSH مشخص میکند. فهرست رمزنگارهای موجود را میتوان با استفاده از "ssh -Q cipher" به دست آورد. مقدار پیشفرض “aes256-ctr” است.
-zserial_number- شماره
سریالی را
برای
گنجاندن در
گواهی مشخص
میکند تا
این گواهی
را از سایر
گواهیهای
صادرشده از
همان CA
متمایز
سازد. اگر
serial_number با یک
نویسهٔ ‘+’
پیشوند شده
باشد،
آنگاه
شماره
سریال برای
هر گواهی
امضاشده در
یک خط فرمان
افزایش
خواهد یافت.
شماره
سریال
پیشفرض
صفر است.
هنگام تولید یک KRL، فلگ
-zبرای مشخص کردن شماره نسخه KRL استفاده میشود.
تولید پیمانهها (MODULI GENERATION)
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 در
دسترس است:
lines=number- خروج پس از غربالگری تعداد خطوط مشخصشده در حین انجام غربالگری کاندیدهای DH.
start-line=line-number- شروع غربالگری از شماره خط مشخصشده در حین انجام غربالگری کاندیدهای DH.
checkpoint=filename- نوشتن آخرین خط پردازششده در فایل مشخصشده در حین انجام غربالگری کاندیدهای DH. این قابلیت برای رد شدن از خطوطی در فایل ورودی که قبلاً پردازش شدهاند، در صورتی که کار مجدداً راهاندازی شود، به کار میرود.
start=hex-value- مشخص کردن نقطه شروع (به هگزادسیمال) هنگام تولید پیمانههای کاندید برای DH-GEX.
generator=value- مشخص کردن مولد مورد نظر (به دهدهی) هنگام آزمایش پیمانههای کاندید برای DH-GEX.
گواهیها (CERTIFICATES)
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 را غیرفعال کند، تنها در صورت ارائه از نشانیهای مبدأ خاصی معتبر باشد یا استفاده از یک دستور خاص را اجباری نماید.
گزینههایی که برای گواهیهای کاربر معتبر هستند عبارتند از:
clear- پاک کردن تمامی مجوزهای فعالشده. این ویژگی برای پاک کردن مجموعه مجوزهای پیشفرض مفید است تا بتوان مجوزها را بهطور جداگانه اضافه کرد.
critical:name[=contents]extension:name[=contents]- گنجاندن یک گزینهٔ بحرانی (critical option) یا افزونهٔ (extension) دلخواه در گواهی. نام name مشخصشده باید شامل یک پسوند دامنه باشد، مانند “name@example.com”. اگر contents مشخص شده باشد، به عنوان محتوای افزونه/گزینه بهصورت یک رشته کدگذاریشده گنجانده میشود، در غیر این صورت افزونه/گزینه بدون هیچ محتوایی ایجاد میگردد (که معمولاً نشاندهندهٔ یک فلگ است). افزونهها ممکن است توسط یک کلاینت یا سرور که آنها را نمیشناسد نادیده گرفته شوند، در حالی که گزینههای بحرانی ناشناخته باعث رد شدن گواهی خواهند شد.
force-command=command- اجبار اجرای command بهجای هر پوسته یا دستور مشخصشده توسط کاربر هنگام استفاده از گواهی برای احراز هویت.
no-agent-forwarding- غیرفعال کردن فورواردینگ ssh-agent(1) (بهطور پیشفرض مجاز است).
no-port-forwarding- غیرفعال کردن فورواردینگ پورت (بهطور پیشفرض مجاز است).
no-pty- غیرفعال کردن تخصیص PTY (بهطور پیشفرض مجاز است).
no-user-rc- غیرفعال کردن اجرای ~/.ssh/rc توسط sshd(8) (بهطور پیشفرض مجاز است).
no-x11-forwarding- غیرفعال کردن فورواردینگ X11 (بهطور پیشفرض مجاز است).
permit-agent-forwarding- اجازه دادن به فورواردینگ ssh-agent(1).
permit-port-forwarding- اجازه دادن به فورواردینگ پورت.
permit-pty- اجازه دادن به تخصیص PTY.
permit-user-rc- اجازه دادن به اجرای ~/.ssh/rc توسط sshd(8).
permit-X11-forwarding- اجازه دادن به فورواردینگ X11.
no-touch-required- عدم الزام
به اینکه
امضاهای
ساختهشده
با استفاده
از این کلید
شامل اثبات
حضور کاربر
باشند
(مثلاً با
لمس کردن
احراز
هویتکننده
توسط
کاربر). این
گزینه تنها
برای
الگوریتمهای
احراز
هویتکنندهٔ
FIDO شامل
ecdsa-skوed25519-skکاربرد دارد. source-address=address_list- محدود کردن نشانیهای مبدأیی که گواهی از آنها معتبر تلقی میشود. address_list فهرستی جداشده با کاما از یک یا چند جفت نشانی/ماسک شبکه در قالب CIDR است.
verify-required- الزام به
اینکه
امضاهای
ساختهشده
با استفاده
از این کلید
نشان دهند
هویت کاربر
ابتدا
تایید شده
است، مثلاً
با پین یا
بیومتریک
روی توکن.
این گزینه
تنها برای
الگوریتمهای
احراز
هویتکنندهٔ
FIDO شامل
ecdsa-skوed25519-skکاربرد دارد.
در حال حاضر، هیچ گزینهٔ استانداردی برای کلیدهای میزبان معتبر نیست.
در نهایت،
گواهیها
را میتوان
با طول عمر
اعتبار
تعریف کرد.
گزینهٔ -V
امکان
تعیین
زمانهای
شروع و
پایان
گواهی را
فراهم
میسازد.
گواهیای
که در زمانی
خارج از این
بازه ارائه
شود، معتبر
تلقی
نخواهد شد.
بهطور
پیشفرض،
گواهیها
از مبدأ
زمان UNIX
تا
آیندهای
دور معتبر
هستند.
برای اینکه گواهیها جهت احراز هویت کاربر یا میزبان استفاده شوند، کلید عمومی CA باید مورد اعتماد sshd(8) یا ssh(1) باشد. برای جزئیات بیشتر به آن صفحات راهنما مراجعه فرمایید.
احراز هویتکننده فیدو (FIDO AUTHENTICATOR)
ssh-keygen
قادر به
تولید
کلیدهای
مبتنی بر
احراز
هویتکنندهٔ
FIDO است، که پس
از آن تا
زمانی که
احراز
هویتکنندهٔ
سختافزاری
هنگام
استفاده از
کلیدها
متصل باشد،
میتوان از
آنها درست
مانند هر
نوع کلید
دیگری که
توسط OpenSSH
پشتیبانی
میشود
استفاده
نمود. احراز
هویتکنندههای
FIDO عموماً از
کاربر
میخواهند
که با لمس یا
ضربه زدن
روی آنها،
عملیات را
بهطور
صریح مجاز
کند.
کلیدهای FIDO
از دو بخش
تشکیل
شدهاند: یک
بخش
دستگیرهٔ
کلید (key handle) که
در فایل
کلید خصوصی
روی دیسک
ذخیره
میشود، و
یک کلید
خصوصی به
ازای هر
دستگاه که
مختص به هر
احراز
هویتکنندهٔ
FIDO بوده و
نمیتوان
آن را از
سختافزار
احراز
هویتکننده
استخراج
کرد. این دو
بخش هنگام
احراز هویت
توسط
سختافزار
ترکیب
میشوند تا
کلید واقعی
را که برای
امضای
چالشهای
احراز هویت
استفاده
میشود
استخراج
کنند. انواع
کلیدهای
پشتیبانیشده
عبارتند از
ecdsa-sk و
ed25519-sk.
گزینههای معتبر برای کلیدهای FIDO عبارتند از:
application- بازنویسی رشتهٔ پیشفرض برنامه/مبدأ FIDO که برابر “ssh:” است. این مورد ممکن است هنگام تولید کلیدهای مقیمِ مخصوص میزبان یا دامنه مفید باشد. رشته برنامه مشخصشده باید با “ssh:” آغاز شود.
challenge=path- مسیری را به یک رشتهٔ چالش مشخص میکند که در حین تولید کلید به احراز هویتکنندهٔ FIDO ارسال خواهد شد. رشتهٔ چالش ممکن است به عنوان بخشی از یک پروتکل خارج از باند (out-of-band) برای ثبت کلید استفاده شود (بهطور پیشفرض یک چالش تصادفی استفاده میشود).
device- مشخص کردن صریح یک دستگاه fido(4) برای استفاده، بهجای اینکه به میانافزار احراز هویتکننده اجازه داده شود یکی را انتخاب کند.
no-touch-required- مشخص کردن اینکه کلید خصوصی تولیدشده هنگام ایجاد امضاها نیازی به رویدادهای لمس (حضور کاربر) نداشته باشد. توجه داشته باشید که sshd(8) بهطور پیشفرض چنین امضاهایی را رد خواهد کرد، مگر اینکه از طریق یک گزینه در authorized_keys بازنویسی شده باشد.
resident- مشخص کردن اینکه دستگیرهٔ کلید باید روی خود احراز هویتکنندهٔ FIDO ذخیره شود. این کار استفاده از احراز هویتکننده را روی چندین رایانه آسانتر میکند. کلیدهای مقیم (Resident keys) ممکن است در احراز هویتکنندههای FIDO2 پشتیبانی شوند و معمولاً نیازمند این هستند که قبل از تولید، یک پین (PIN) روی احراز هویتکننده تنظیم شده باشد. کلیدهای مقیم را میتوان با استفاده از ssh-add(1) از روی احراز هویتکننده بارگیری کرد. ذخیره کردن هر دو بخش یک کلید روی یک احراز هویتکنندهٔ FIDO، احتمال اینکه یک مهاجم بتواند از یک دستگاه احراز هویتکنندهٔ سرقتشده استفاده کند را افزایش میدهد.
user- یک نام کاربری برای مرتبط شدن با یک کلید مقیم، که نام کاربری پیشفرضِ خالی را بازنویسی میکند. تعیین یک نام کاربری ممکن است هنگام تولید چندین کلید مقیم برای یک نام برنامه یکسان مفید باشد.
verify-required- مشخص کردن اینکه این کلید خصوصی برای هر امضا نیازمند تایید هویت کاربر باشد. همهٔ احراز هویتکنندههای FIDO از این گزینه پشتیبانی نمیکنند. در حال حاضر احراز هویت با پین (PIN) تنها روش تایید هویت پشتیبانیشده است، اما ممکن است در آینده روشهای دیگری نیز پشتیبانی شوند.
write-attestation=path- میتواند در زمان تولید کلید برای ثبت دادههای تصدیق (attestation) بازگرداندهشده از احراز هویتکنندههای FIDO در حین تولید کلید استفاده شود. این اطلاعات بالقوه حساس هستند. بهطور پیشفرض، این اطلاعات نادیده گرفته و دور ریخته میشوند.
فهرستهای ابطال کلید (KEY REVOCATION LISTS)
ssh-keygen
قادر به
مدیریت
فهرستهای
ابطال کلید
(KRL) در قالب OpenSSH
است. این
فایلهای
دودویی،
کلیدها یا
گواهیهایی
را که باید
باطل شوند
با استفاده
از قالبی
فشرده مشخص
میکنند،
که در صورت
ابطال بر
اساس شماره
سریال، به
اندازهٔ
تنها یک بیت
به ازای هر
گواهی فضا
میگیرند.
KRLها را
میتوان با
استفاده از
فلگ -k
تولید کرد.
این گزینه
یک یا چند
فایل را از
خط فرمان
میخواند و
یک KRL جدید
تولید
میکند. این
فایلها
میتوانند
حاوی یک
مشخصات KRL (در
زیر ببینید)
یا کلیدهای
عمومی
باشند که در
هر خط یکی
فهرست شده
است.
کلیدهای
عمومی ساده
با فهرست
کردن هش یا
محتویات
آنها در KRL
باطل
میشوند و
گواهیها
با شماره
سریال یا
شناسه کلید
(اگر شماره
سریال صفر
باشد یا در
دسترس
نباشد) باطل
میگردند.
ابطال کلیدها با استفاده از مشخصات KRL امکان کنترل دقیق بر انواع رکوردهای استفادهشده برای ابطال کلیدها را فراهم میکند و میتواند برای ابطال مستقیم گواهیها بر اساس شماره سریال یا شناسه کلید بدون در دست داشتن گواهی اصلی کامل استفاده شود. یک مشخصات KRL شامل خطوطی است که حاوی یکی از دستورالعملهای زیر بوده و به دنبال آن یک دونقطه و مقداری اطلاعات ویژهٔ آن دستورالعمل قرار دارد.
serial: serial_number[-serial_number]- یک گواهی با
شماره
سریال
مشخصشده
را باطل
میکند.
شماره
سریالها
مقادیر ۶۴
بیتی بدون
احتساب صفر
هستند و
میتوانند
به صورت
دهدهی،
هگزادسیمال
یا
هشتهشتی
(اکتال)
بیان شوند.
اگر دو
شماره
سریال
جداشده با
خط تیره
مشخص شوند،
محدودهٔ
شماره
سریالها
شامل و میان
هر دو باطل
میشود.
کلید CA باید
در خط فرمان
ssh-keygenبا استفاده از گزینهٔ-sمشخص شده باشد. id: key_id- یک گواهی با
رشته شناسه
کلید (key ID)
مشخصشده
را باطل
میکند.
کلید CA باید
در خط فرمان
ssh-keygenبا استفاده از گزینهٔ-sمشخص شده باشد. key: public_key- کلید مشخصشده را باطل میکند. اگر یک گواهی فهرست شده باشد، به عنوان یک کلید عمومی ساده باطل میگردد.
sha1: public_key- کلید مشخصشده را با گنجاندن هش SHA1 آن در KRL باطل میکند.
sha256: public_key- کلید مشخصشده را با گنجاندن هش SHA256 آن در KRL باطل میکند. KRLهایی که کلیدها را بر اساس هش SHA256 باطل میکنند در نسخههای OpenSSH پیش از ۷.۹ پشتیبانی نمیشوند.
hash: fingerprint- یک کلید را
با استفاده
از
اثرانگشت
هششده
باطل
میکند،
همانطور
که از یک
پیام لاگ
احراز هویت
sshd(8) یا
فلگ
-lدرssh-keygenبه دست میآید. در اینجا تنها اثرانگشتهای SHA256 پشتیبانی میشوند و KRLهای حاصل در نسخههای OpenSSH پیش از ۷.۹ پشتیبانی نمیشوند.
KRLها را
میتوان با
استفاده از
فلگ -u
علاوه بر
-k
بهروزرسانی
کرد. هنگامی
که این
گزینه مشخص
شود،
کلیدهای
فهرستشده
از طریق خط
فرمان در KRL
ادغام شده و
به کلیدهای
موجود در آن
افزوده
میشوند.
همچنین
این امکان
وجود دارد
که با داشتن
یک KRL، بررسی
شود که آیا
یک کلید (یا
کلیدهای)
خاص را باطل
میکند یا
خیر. فلگ
-Q یک KRL
موجود را
مورد
پرسوجو
قرار
میدهد و هر
کلید
مشخصشده
در خط فرمان
را آزمایش
میکند. اگر
هر کلید
فهرستشده
در خط فرمان
باطل شده
باشد (یا
خطایی رخ
دهد)، آنگاه
ssh-keygen با
وضعیت خروج
غیرصفر
خارج خواهد
شد. وضعیت
خروج صفر
تنها در
صورتی
بازگردانده
میشود که
هیچ کلیدی
باطل نشده
باشد.
امضاکنندگان مجاز (ALLOWED SIGNERS)
هنگام
اعتبارسنجی
امضاها،
ssh-keygen از
فهرستی
ساده از
هویتها و
کلیدها
استفاده
میکند تا
تعیین کند
آیا یک امضا
از منبعی
مجاز آمده
است یا خیر.
این فایل
"امضاکنندگان
مجاز" (allowed signers) از
قالبی
الگوبرداریشده
از قالب
فایل AUTHORIZED_KEYS شرح
داده شده در
sshd(8)
استفاده
میکند. هر
خط از فایل
شامل
فیلدهای
زیر است که
با فاصله از
هم جدا
شدهاند:
کارگزاران
اصلی (principals)،
گزینهها
(options)، نوع کلید
(keytype)، کلید
کدگذاریشده
با base64. خطوط
خالی و
خطوطی که با
‘#’ شروع
میشوند به
عنوان
یادداشت
(کامنت)
نادیده
گرفته
میشوند.
فیلد
کارگزاران
اصلی یک
فهرست الگو
(الگوها (PATTERNS)
در ssh_config(5)
را ببینید)
شامل یک یا
چند الگوی
هویتی USER@DOMAIN
جداشده با
کاما است که
برای امضا
پذیرفته
میشوند.
هنگام
اعتبارسنجی،
هویت
ارائهشده
از طریق
گزینهٔ -I
باید با یک
الگوی
کارگزاران
اصلی
مطابقت
داشته باشد
تا کلید
متناظر
برای
اعتبارسنجی
قابل قبول
دانسته
شود.
گزینهها (در صورت وجود) از مشخصات گزینههای جداشده با کاما تشکیل شدهاند. هیچ فاصلهای مجاز نیست، مگر در داخل نقلقول دوگانه (double quotes). مشخصات گزینههای زیر پشتیبانی میشوند (توجه داشته باشید که کلمات کلیدی گزینهها به بزرگی و کوچکی حروف حساس نیستند):
- نشان میدهد که این کلید به عنوان یک مرجع صدور گواهی (CA) پذیرفته شده است و گواهیهای امضاشده توسط این CA ممکن است برای اعتبارسنجی پذیرفته شوند.
namespaces=namespace-list- یک فهرست الگو از فضاهای نامی که برای این کلید پذیرفته میشوند را مشخص میکند. اگر این گزینه وجود داشته باشد، فضای نام امضای گنجاندهشده در شیء امضا و ارائهشده در خط فرمان اعتبارسنجی باید پیش از اینکه کلید قابل قبول در نظر گرفته شود، با فهرست مشخصشده مطابقت داشته باشد.
valid-after=timestamp- نشان میدهد که کلید برای استفاده در برچسب زمانی مشخصشده یا پس از آن معتبر است، که ممکن است یک تاریخ یا زمان در قالبهای YYYYMMDD[Z] یا YYYYMMDDHHMM[SS][Z] باشد. تاریخها و زمانها در منطقه زمانی فعلی سیستم تفسیر خواهند شد مگر اینکه با یک نویسهٔ Z خاتمه یابند، که باعث میشود در منطقه زمانی UTC تفسیر شوند.
valid-before=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...
محیط (ENVIRONMENT)
SSH_SK_PROVIDER- مسیری را به یک کتابخانه مشخص میکند که هنگام بارگیری هرگونه کلید میزبانیشده روی احراز هویتکنندهٔ FIDO استفاده خواهد شد و حالت پیشفرضِ استفاده از پشتیبانی توکار USB HID را بازنویسی میکند.
فایلها (FILES)
- ~/.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) شرح داده شده است.
همچنین ببینید (SEE ALSO)
ssh(1), ssh-add(1), ssh-agent(1), moduli(5), sshd(8) The Secure Shell (SSH) Public Key File Format, RFC 4716, 2006.
نویسندگان (AUTHORS)
پروژهٔ 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 |