SSH-TPM-KEYGEN(1) ssh-tpm-keygen manual SSH-TPM-KEYGEN(1) نام (NAME) ssh-tpm-keygen - ابزار ایجاد کلید برای ssh-tpm-agent خلاصه دستور (SYNOPSIS) ssh-tpm-keygen [OPTIONS]... ssh-tpm-keygen --wrap PATH --wrap-with PATH ssh-tpm-keygen --import PATH ssh-tpm-keygen --print-pubkey PATH ssh-tpm-keygen --supported ssh-tpm-keygen -p [-f keyfile] [-P old passphrase] [-N new passphrase] ssh-tpm-keygen -A [-f path prefix] [--hierarchy hierarchy] توضیحات (DESCRIPTION) ssh-tpm-keygen برنامه‌ای است که امکان ایجاد کلیدهای بسته‌بندی‌شده با TPM را برای ssh-tpm-agent فراهم می‌کند. گزینه‌ها (OPTIONS) -A تولید کلیدهای میزبان (host keys) برای تمام انواع کلید (rsa و ecdsa). -b BITS تعداد بیت‌های کلید برای ایجاد. • rsa: 2048 (پیش‌فرض) • ecdsa: 256 (پیش‌فرض) | 384 | 521 -C COMMENT ارائه یک یادداشت (comment) همراه با کلید. -f PATH مسیر فایل کلید خروجی. -N PASSPHRASE عبارت‌عبور (passphrase) برای کلید. -o, --owner-password PASSPHRASE درخواست گذرواژه مالک (owner password). -t [ecdsa | rsa] مشخص کردن نوع کلید برای ایجاد. پیش‌فرض ecdsa است. -I, --import PATH وارد کردن (import) کلید موجود به ssh-tpm-agent. --parent-handle HIERARCHY والد (parent) برای کلید TPM. می‌تواند یک سلسله‌مراتب (hierarchy) یا یک هندل پایدار (persistent handle) باشد. سلسله‌مراتب‌های موجود: - owner، o (پیش‌فرض) - endorsement، e - null، n - platform، p --print-pubkey PATH چاپ کلید عمومی با دریافت یک کلید خصوصی TPM. --supported فهرست کردن انواع کلیدهای پشتیبانی‌شده توسط TPM. --hierarchy HIERARCHY ایجاد یک کلید عمومی. تنها می‌تواند همراه با -A استفاده شود. برای نحوه استفاده، بخش Hierarchy Keys در ssh-tpm-agent(1) را ببینید. سلسله‌مراتب‌های موجود: • owner, o • endorsement, e • null, n • platform, p --wrap PATH یک کلید SSH جهت بسته‌بندی برای وارد کردن در ماشین راه دور. --wrap-with PATH کلید والد برای بسته‌بندی کلید SSH با آن. مثال‌ها (EXAMPLES) ایجاد کلید ایجاد یک کلید با ssh-tpm-keygen. $ ssh-tpm-keygen Generating a sealed public/private ecdsa key pair. Enter file in which to save the key (/home/user/.ssh/id_ecdsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/user/.ssh/id_ecdsa.tpm Your public key has been saved in /home/user/.ssh/id_ecdsa.pub The key fingerprint is: SHA256:NCMJJ2La+q5tGcngQUQvEOJP3gPH8bMP98wJOEMV564 The key's randomart image is the color of television, tuned to a dead channel. $ cat /home/user/.ssh/id_ecdsa.pub ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBOTOsMXyjTc1wiQSKhRiNhKFsHJNLzLk2r4foXPLQYKR0tuXIBMTQuMmc7OiTgNMvIjMrcb9adgGdT3s+GkNi1g= وارد کردن کلید موجود در صورتی که بخواهید از کلید در یک فضای ذخیره‌سازی امن راه دور پشتیبان تهیه کنید و هم‌زمان به‌طور روزمره از طریق TPM از آن استفاده نمایید، مفید است. یک کلید ایجاد کنید، یا از یک کلید موجود استفاده نمایید. $ ssh-keygen -t ecdsa -f id_ecdsa Generating public/private ecdsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in id_ecdsa Your public key has been saved in id_ecdsa.pub The key fingerprint is: SHA256:bDn2EpX6XRX5ADXQSuTq+uUyia/eV3Z6MW+UtxjnXvU user@localhost The key's randomart image is: +---[ECDSA 256]---+ | .+=o..| | o. oo.| | o... .o| | . + .. ..| | S . . o| | o * . oo=*| | ..+.oo=+E| | .++o...o=| | .++++. .+ | +----[SHA256]-----+ کلید را با استفاده از سوییچ --import وارد کنید. $ ssh-tpm-keygen --import id_ecdsa Sealing an existing public/private ecdsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in id_ecdsa.tpm The key fingerprint is: SHA256:bDn2EpX6XRX5ADXQSuTq+uUyia/eV3Z6MW+UtxjnXvU The key's randomart image is the color of television, tuned to a dead channel. ایجاد و بسته‌بندی کلید خصوصی برای ماشین کلاینت روی سرور راه دور در سمت کلاینت یک کلید اصلی (primary key) تحت یک سلسله‌مراتب ایجاد کنید. این مثال از سلسله‌مراتب owner به همراه یک SRK استفاده خواهد کرد. فایل خروجی srk.pem باید به سمت راه دور که کلید را ایجاد می‌کند منتقل شود. این کار می‌تواند به عنوان بخشی از آماده‌سازی (provisioning) کلاینت انجام پذیرد. $ tpm2_createprimary -C o -G ecc -g sha256 -c prim.ctx -a 'restricted|decrypt|fixedtpm|fixedparent|sensitivedataorigin|userwithauth|noda' -f pem -o srk.pem در سمت راه دور یک کلید SSH از نوع p256 بدون گذرواژه ایجاد می‌کنیم و آن را با استفاده از ssh-tpm-keygen به کمک srk.pem دریافتی از سمت کلاینت بسته‌بندی می‌نماییم. $ ssh-keygen -t ecdsa -b 256 -N "" -f ./ecdsa.key یا با openssl: $ openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:prime256v1 -out ecdsa.key بسته‌بندی با ssh-tpm-keygen: $ ssh-tpm-keygen --wrap-with srk.pub --wrap ecdsa.key -f wrapped_id_ecdsa در سمت کلاینت می‌توانیم wrapped_id_ecdsa را به یک کلید قابل بارگذاری بازگشایی (unwrap) کنیم. $ ssh-tpm-keygen --import ./wrapped_id_ecdsa.tpm --output id_ecdsa.tpm $ ssh-tpm-add id_ecdsa.tpm فایل‌ها (FILES) ~/ssh/id_rsa.tpm, ~/ssh/id_ecdsa.tpm شامل کلیدهای خصوصی ssh مورد استفاده توسط ssh-tpm-agent است. این‌ها فایل‌های کلید TPM 2.0 TSS هستند و به‌طور امن توسط TPM بسته‌بندی شده‌اند. آن‌ها را می‌توان به‌صورت عمومی به اشتراک گذاشت زیرا فقط توسط همان TPM که روی آن ایجاد شده‌اند قابل استفاده هستند. با این حال احتمالاً بهتر است این کار را انجام ندهید. ~/ssh/id_rsa.pub, ~/ssh/id_ecdsa.pub شامل کلیدهای عمومی ssh است. این فایل‌ها می‌توانند به‌صورت عمومی به اشتراک گذاشته شوند و قالبی مشابه با موارد ایجادشده توسط ssh-keygen(1) دارند. همچنین ببینید (SEE ALSO) ssh-agent(1), ssh(1), ssh-tpm-keygen(1), ssh-keygen(1) نکات، استانداردها و موارد دیگر (NOTES, STANDARDS AND OTHER) مشخصات ASN.1 برای فایل‌های کلید TPM 2.0 ssh-tpm-agent v0.9.0 2026-08-10 SSH-TPM-KEYGEN(1)