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

ssh-agent — کارگزار احراز هویت OpenSSH

ssh-agent [-c | -s] [-DdTU] [-a bind_address] [-E fingerprint_hash] [-O option] [-P allowed_providers] [-t life] ssh-agent [-TU] [-a bind_address] [-E fingerprint_hash] [-O option] [-P allowed_providers] [-t life] command [arg ...] ssh-agent [-c | -s] -k ssh-agent -u ssh-agent -V

ssh-agent برنامه‌ای برای نگهداری کلیدهای خصوصی مورد استفاده در احراز هویت با کلید عمومی است. از طریق استفاده از متغیرهای محیطی، کارگزار می‌تواند مکان‌یابی شده و هنگام ورود به ماشین‌های دیگر با استفاده از ssh(1) به‌طور خودکار برای احراز هویت به کار گرفته شود.

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

bind_address
متصل کردن کارگزار به سوکت دامنهٔ UNIX در نشانی bind_address. حالت پیش‌فرض، ایجاد یک سوکت در مسیری تصادفی منطبق بر $HOME/.ssh/agent/s.* است.
تولید دستورهای C-shell در خروجی استاندارد. اگر متغیر SHELL شبیه به پوسته‌ای از نوع csh باشد، این حالت پیش‌فرض است.
حالت پیش‌زمینه. هنگامی که این گزینه مشخص شود، ssh-agent منشعب (fork) نخواهد شد.
حالت اشکال‌زدایی. هنگامی که این گزینه مشخص شود، ssh-agent منشعب (fork) نخواهد شد و اطلاعات اشکال‌زدایی را در خروجی استاندارد خطا می‌نویسد.
fingerprint_hash
الگوریتم درهم‌سازی (هش) مورد استفاده هنگام نمایش اثر انگشت کلید را مشخص می‌کند. گزینه‌های معتبر عبارتند از: “md5” و “sha256”. مقدار پیش‌فرض “sha256” است.
متوقف کردن (kill) کارگزار فعلی (که توسط متغیر محیطی SSH_AGENT_PID مشخص شده است).
option
تعیین یک گزینه هنگام راه‌اندازی ssh-agent. گزینه‌های پشتیبانی‌شده عبارتند از: allow-remote-pkcs11, no-restrict-websafe و websafe-allow.

گزینهٔ allow-remote-pkcs11 به کلاینت‌های یک ssh-agent بازارسال‌شده (forwarded) اجازه می‌دهد کتابخانه‌های ارائه‌دهندهٔ PKCS#11 یا FIDO را بارگذاری کنند. به‌طور پیش‌فرض تنها کلاینت‌های محلی مجاز به انجام این عملیات هستند. توجه داشته باشید که اعلام راه دور (remote) بودن کلاینتِ ssh-agent توسط ssh(1) انجام می‌شود، و استفاده از سایر ابزارها برای بازارسال دسترسی به سوکت کارگزار ممکن است این محدودیت را دور بزند.

گزینهٔ no-restrict-websafe به ssh-agent دستور می‌دهد تا امضاها با استفاده از کلیدهای FIDO را که ممکن است درخواست‌های احراز هویت وب باشند، مجاز بداند. به‌طور پیش‌فرض، ssh-agent درخواست‌های امضا برای کلیدهای FIDO را که در آن‌ها رشتهٔ کاربرد کلید با “ssh:” شروع نمی‌شود و داده‌هایی که قرار است امضا شوند شبیه به یک درخواست احراز هویت کاربر در ssh(1) یا امضای ssh-keygen(1) نیستند، رد می‌کند. رفتار پیش‌فرض از این امر جلوگیری می‌کند که دسترسی بازارسال‌شده به یک کلید FIDO، توانایی احراز هویت در وب‌سایت‌ها را نیز به‌طور ضمنی منتقل کند.

به‌عنوان روشی جایگزین، گزینهٔ websafe-allow امکان تعیین یک فهرست الگو از رشته‌های کاربرد کلید را برای جایگزینی با فهرست مجاز پیش‌فرض برنامه‌ها فراهم می‌کند؛ برای نمونه: “websafe-allow=ssh:*,example.org,*.example.com”

برای شرح نحو فهرست الگو، بخش PATTERNS را در ssh_config(5) ببینید.

allowed_providers
یک فهرست الگو از مسیرهای قابل قبول برای کتابخانه‌های اشتراکی میان‌افزار احراز هویت‌کنندهٔ FIDO و ارائه‌دهندهٔ PKCS#11 را مشخص می‌کند که ممکن است با گزینه‌های -S یا -s در ssh-add(1) استفاده شوند. کتابخانه‌هایی که با این فهرست الگو مطابقت نداشته باشند، رد خواهند شد. فهرست پیش‌فرض “/usr/lib*/*,/usr/local/lib*/*” است.

برای شرح نحو فهرست الگو، بخش PATTERNS را در ssh_config(5) ببینید.

تولید دستورهای Bourne shell در خروجی استاندارد. اگر متغیر SHELL شبیه به پوسته‌ای از نوع csh نباشد، این حالت پیش‌فرض است.
متصل کردن سوکت کارگزار درون یک زیردایرکتوری تصادفی به شکل $TMPDIR/ssh-XXXXXXXXXX/agent.<ppid> ، به‌جای رفتار پیش‌فرض که استفاده از یک نام تصادفی منطبق بر $HOME/.ssh/agent/s.* است.
life
تنظیم یک مقدار پیش‌فرض برای حداکثر طول عمر هویت‌های اضافه‌شده به کارگزار. طول عمر می‌تواند بر حسب ثانیه یا با قالبی زمانی طبق مشخصات ارائه‌شده در sshd_config(5) تعیین شود. طول عمر مشخص‌شده برای یک هویت با ssh-add(1) این مقدار را باطل می‌کند. بدون این گزینه، حداکثر طول عمر پیش‌فرض به‌صورت نامحدود (همیشگی) خواهد بود.
به ssh-agent دستور می‌دهد که سوکت‌های قدیمی و بی‌استفادهٔ کارگزار را در $HOME/.ssh/agent/ پاک‌سازی نکند.
به ssh-agent دستور می‌دهد که تنها سوکت‌های قدیمی و بی‌استفادهٔ کارگزار را در $HOME/.ssh/agent/ پاک‌سازی کرده و سپس بی‌درنگ خارج شود. اگر این گزینه دو بار داده شود، ssh-agent سوکت‌های قدیمی کارگزار را صرف‌نظر از نام میزبان ایجادکنندهٔ آن‌ها حذف خواهد کرد.
command [arg ...]
اگر یک دستور (و آرگومان‌های اختیاری) داده شود، به‌عنوان یک زیرفرآیند از کارگزار اجرا می‌شود. کارگزار با پایان یافتن دستوری که در خط فرمان داده شده، به‌طور خودکار خارج می‌شود.
نمایش شماره نسخه و خروج.

سه روش اصلی برای راه‌اندازی کارگزار وجود دارد. روش نخست در آغاز یک نشست گرافیکی X است، به‌طوری که تمام پنجره‌ها یا برنامه‌های دیگر به‌عنوان فرزندان برنامهٔ ssh-agent راه‌اندازی می‌شوند. کارگزار دستوری را آغاز می‌کند که متغیرهای محیطی‌اش تحت آن صادر می‌شوند؛ برای نمونه ssh-agent xterm &. با پایان یافتن دستور، کارگزار نیز پایان می‌یابد.

روش دوم برای یک نشست ورود به سیستم به کار می‌رود. هنگامی که ssh-agent آغاز می‌شود، دستورهای پوسته‌ای را که برای تنظیم متغیرهای محیطی‌اش لازم است چاپ می‌کند؛ این دستورها به نوبهٔ خود می‌توانند در پوستهٔ فراخوان ارزیابی و اجرا شوند، برای نمونه eval `ssh-agent -s`.

در هر دو مورد، ssh(1) این متغیرهای محیطی را بررسی می‌کند و از آن‌ها برای برقراری ارتباط با کارگزار بهره می‌برد.

روش سوم برای اجرای ssh-agent از طریق فعال‌سازی سوکت (socket activation) توسط یک فرآیند ناظر مانند systemd است. در این حالت، فرآیند ناظر سوکت شنونده را ایجاد می‌کند و مسئول راه‌اندازی ssh-agent در صورت نیاز، و همچنین اطلاع‌رسانی مکان سوکت شنونده به سایر برنامه‌های نشست کاربر است. فعال‌سازی سوکت زمانی استفاده می‌شود که ssh-agent با هر یک از فلگ‌های -d یا -D آغاز شود، هیچ نشانی شنود سوکتی با فلگ -a مشخص نشده باشد، و هر دو متغیر محیطی LISTEN_FDS و LISTEN_PID به‌درستی توسط فرآیند ناظر ارائه شده باشند.

کارگزار در ابتدا فاقد هرگونه کلید خصوصی است. کلیدها با استفاده از ssh-add(1) یا توسط ssh(1) در صورت تنظیم AddKeysToAgent در ssh_config(5) اضافه می‌شوند. چندین هویت می‌توانند به‌طور هم‌زمان در ssh-agent ذخیره شوند و ssh(1) در صورت وجود، به‌طور خودکار از آن‌ها استفاده خواهد کرد. همچنین از ssh-add(1) برای حذف کلیدها از ssh-agent و استعلام کلیدهای نگهداری‌شده در آن استفاده می‌شود.

اتصالات به ssh-agent می‌توانند با استفاده از گزینهٔ -A در ssh(1) (اما هشدارهای مستندشده در آن را ملاحظه کنید) از سایر میزبان‌های راه دور بازارسال شوند، که نیاز به ذخیرهٔ داده‌های احراز هویت در ماشین‌های دیگر را از بین می‌برد. عبارت‌های عبور و کلیدهای خصوصی احراز هویت هرگز از شبکه عبور نمی‌کنند: اتصال به کارگزار از طریق اتصالات راه دور SSH بازارسال می‌شود و نتیجه به درخواست‌کننده بازگردانده می‌شود، که به کاربر امکان می‌دهد به شیوه‌ای امن در هر کجای شبکه به هویت‌های خود دسترسی داشته باشد.

ssh-agent با دریافت سیگنال SIGUSR1 تمام کلیدهایی را که بارگذاری کرده است حذف خواهد کرد.

هنگامی که ssh-agent آغاز می‌شود، شناسهٔ فرآیند (PID) کارگزار را در این متغیر ذخیره می‌کند.
هنگامی که ssh-agent آغاز می‌شود، یک سوکت دامنهٔ UNIX ایجاد کرده و مسیر آن را در این متغیر ذخیره می‌کند. این سوکت تنها برای کاربر جاری قابل دسترسی است، اما به‌سادگی توسط ریشه (root) یا نمونهٔ دیگری از همان کاربر قابل سوءاستفاده است.

$HOME/.ssh/agent/s.*
سوکت‌های دامنهٔ UNIX که برای برقراری ارتباط با کارگزار احراز هویت استفاده می‌شوند. این سوکت‌ها تنها باید توسط مالک قابل خواندن باشند. سوکت‌ها باید هنگام خروج کارگزار به‌طور خودکار حذف شوند.

ssh(1), ssh-add(1), ssh-keygen(1), ssh_config(5), sshd(8)

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

May 27, 2026 Linux 6.12.107+deb13-amd64