| AUTOSSH(1) | General Commands Manual | AUTOSSH(1) |
نام (NAME)
autossh —
نظارت و
راهاندازی
مجدد
خودکار
نشستهای
SSH
خلاصه دستور (SYNOPSIS)
autossh [-V]
[-M port[:echo_port]]
[-f] [SSH_OPTIONS]
توضیحات (DESCRIPTION)
autossh
برنامهای
برای
راهاندازی
و نظارت بر
یک نسخه از ssh
است که در
صورت متوقف
شدن یا قطع
انتقال
ترافیک، آن
را بر حسب
نیاز
مجدداً
راهاندازی
میکند.
ایده
اولیه و
سازوکار
این ابزار
از rstunnel (تونل SSH
مطمئن)
گرفته شده
است. از نسخه
۱.۲ autossh روش
کار تغییر
کرد: autossh از
ssh برای
ایجاد یک
حلقه از
فورواردهای
ssh (یکی از
سیستم محلی
به دوردست،
و دیگری از
دوردست به
محلی)
استفاده
میکند و
سپس
دادههای
آزمایشی را
ارسال کرده
و منتظر
بازگشت
آنها
میماند.
(این ایده با
تشکر از
ترنس
مارتین / Terrence Martin
است.)
از نسخه ۱.۳، یک روش جدید اضافه شد (با تشکر از ران یورستون / Ron Yorston): میتوان یک پورت را برای یک سرویس echo دوردست تعیین کرد تا دادههای آزمایشی را بازتاب دهد. این کار از ترافیک اضافی و دردسر اطمینان از تداخل نداشتن تمام شماره پورتها در رایانه دوردست جلوگیری میکند. روش حلقه فورواردها برای شرایطی که امکان استفاده از سرویس echo وجود ندارد، همچنان در دسترس است.
کنترل SSH (CONTROLLING SSH)
خروجهای SSH (SSH exits)
autossh تلاش
میکند
نحوه خاتمه
یافتن
فرآیند ssh
تحت نظارت
خود را
تشخیص دهد و
واکنش
مناسب نشان
دهد. قوانین
به این شرح
است:
- 1.
- اگر فرآیند
ssh به صورت
عادی خارج
شود (برای
مثال، شخصی
در یک نشست
تعاملی
دستور “exit”
را تایپ
کند)،
autosshبه جای راهاندازی مجدد، خارج میشود؛ - 2.
- اگر خود
autosshسیگنال SIGTERM، SIGINT یا SIGKILL دریافت کند، فرض میکند که به صورت عمدی به آن سیگنال داده شده است و پس از کشتن فرآیند فرزند ssh، خارج میشود؛ - 3.
- اگر خود
autosshسیگنال SIGUSR1 دریافت کند، فرآیند فرزند ssh را میکشد و فرآیند جدیدی را آغاز میکند؛ - 4.
- به صورت
دورهای (به
طور
پیشفرض هر
۱۰ دقیقه
یکبار)،
autosshتلاش میکند ترافیکی را از پورت فوروارد شده نظارتی عبور دهد. اگر این کار با شکست مواجه شود،autosshفرآیند فرزند ssh را (در صورت در حال اجرا بودن) میکشد و فرآیند جدیدی را شروع میکند؛ - 5.
- اگر فرآیند
فرزند ssh به
هر دلیل
دیگری
خاتمه
یابد،
autosshتلاش خواهد کرد فرآیند جدیدی را راهاندازی کند.
رفتار هنگام راهاندازی (Startup behaviour)
اگر نشست ssh
در همان
اولین تلاش
با وضعیت
خروج ۱ شکست
بخورد،
autossh
- 1.
- فرض خواهد کرد که مشکلی در نحو یا پیکربندی اتصال وجود دارد و به جای تلاش مجدد، خارج خواهد شد؛
- 2.
- یک زمان
«دروازه
آغازین» (starting gate)
وجود دارد.
اگر اولین
فرآیند ssh در
چند ثانیه
نخست پس از
شروع با
شکست مواجه
شود،
autosshفرض میکند که هرگز موفق به خروج از «دروازه آغازین» نشده است و خارج میشود. این ویژگی برای مدیریت شکستهای اولیه در احراز هویت، برقراری اتصال و موارد مشابه است. این زمان به طور پیشفرض ۳۰ ثانیه است و میتوان آن را تنظیم کرد (متغیر محیطی AUTOSSH_GATETIME را در زیر ببینید). اگر AUTOSSH_GATETIME برابر ۰ تنظیم شود، هر دو رفتار غیرفعال میشوند: دیگر هیچ «دروازه آغازینی» وجود ندارد و autossh حتی اگر ssh در نخستین اجرا با وضعیت خروج ۱ شکست بخورد، مجدداً آن را راهاندازی میکند. زمان «دروازه آغازین» همچنین هنگامی که فلگ-fبرای autossh استفاده شود، روی ۰ تنظیم میگردد.
شکستهای پیاپی (Continued failures)
اگر اتصال
ssh قطع شود و
تلاشها
برای
راهاندازی
مجدد آن پشت
سر هم با
شکست مواجه
شوند، autossh
شروع به
ایجاد
تاخیر در
تلاشهای
راهاندازی
مجدد خود
میکند و به
تدریج
فاصله
زمانی را
بیشتر و
بیشتر
مینماید
تا اینکه به
حداکثر
بازه زمانی
دوره
نظرسنجی (poll time)
autossh
(معمولاً ۱۰
دقیقه) برسد.
میتوان با
ارسال
سیگنال به
autossh ،
احتمالاً
با SIGHUP (مانند
“kill -HUP” )، آن را
برای تلاش
مجدد تحریک
کرد.
راهاندازی اتصال (Connection setup)
از آنجا که
اتصالها
باید بدون
نیاز به
دخالت
کاربر
برقرار
شوند،
استفاده از
autossh
مستلزم
پیکربندی
نوعی احراز
هویت
خودکار است.
استفاده از
RSAAuthentication به همراه
ssh-agent روش
پیشنهادی
است.
اسکریپت
پوششی
نمونه (wrapper)
بررسی
میکند که
آیا یک agent
برای محیط
جاری در حال
اجرا است یا
خیر، و اگر
در حال اجرا
نباشد یکی
را
راهاندازی
میکند.
تاکید بر
این موضوع
هرگز
زیادهروی
نیست که
ابتدا باید
مطمئن شوید
ssh به تنهایی
و به درستی
کار
میکند، و
میتوانید
نشست مورد
نظر خود را
برقرار
کنید، پیش
از آنکه
تلاش
نمایید آن
را تحت
نظارت autossh
اجرا کنید.
اگر از
قابلیت
تونلزنی
استفاده
میکنید و
نسخهای
قدیمی از ssh
را به کار
میبرید که
از فلگ -N
پشتیبانی
نمیکند،
باید آن را
ارتقا دهید
(نسخه شما
دارای
اشکالات
امنیتی است).
اگر امکان
ارتقا
ندارید،
میتوانید
همانند rstunnel
عمل کرده و
دستوری
مانند “sleep 99999999999”
را برای
اجرا به ssh
بدهید.
گزینهها (OPTIONS)
-Mport[:echo_port]- پورت پایه
نظارتی را
برای
استفاده
مشخص
میکند.
بدون پورت
echo، این پورت
و پورت
بلافاصله
بعد از آن (
port + 1) باید
اعدادی
باشند که
هیچ سرویس
دیگری از
آنها
استفاده
نمیکند.
autosshدادههای آزمایشی را روی پورت پایه نظارت ارسال میکند و آنها را روی پورت بعدی دریافت مینماید. برای مثال، اگر “-M 20000” را مشخص کنید،autosshفورواردها را طوری پیکربندی میکند که بتواند دادهها را روی پورت ۲۰۰۰۰ ارسال کرده و روی پورت ۲۰۰۱ بازپس گیرد.همچنین، میتوان پورتی را برای یک سرویس echo دوردست مشخص کرد. در صورت تمایل به استفاده از سرویس استاندارد inetd echo، این مقدار باید پورت ۷ باشد. هنگامی که یک پورت echo مشخص شود، تنها پورت نظارتی تعیینشده به کار گرفته میشود و پیامهای نظارتی را در هر دو جهت منتقل میکند.
بسیاری از افراد سرویس echo یا حتی inetd را غیرفعال میکنند، بنابراین بررسی کنید که آیا این سرویس روی رایانه دوردست در دسترس است یا خیر. برخی سیستمهای عامل اجازه میدهند که سرویس تنها روی localhost (رابط loopback) شنود کند، که برای این کاربرد کفایت میکند.
سرویس echo همچنین میتواند ساختار پیچیدهتری داشته باشد؛ برای مثال، دیمنی که بر گروهی از تونلهای ssh نظارت میکند.
تنظیم پورت نظارت روی ۰ قابلیت نظارت را خاموش میکند، و در این حالت autossh تنها پس از خروج ssh آن را مجدداً راهاندازی مینماید. برای مثال، اگر از نسخههای جدید OpenSSH استفاده میکنید، ممکن است ترجیح دهید از گزینههای
ServerAliveIntervalوServerAliveCountMaxاستفاده کنید تا در صورتی که کلاینت SSH متوجه شود ارتباطش با سرور قطع شده است، خودبهخود خارج شود. از بسیاری جهات، این روش میتواند راهکار بهتری نسبت به استفاده از پورت نظارتی باشد. -f- باعث
میشود autossh
پیش از
اجرای ssh به
پسزمینه
برود. فلگ
-fاز میان آرگومانهای ارسالی به ssh حذف میشود. توجه داشته باشید که یک تفاوت اساسی میان-fدر autossh و-fدر ssh وجود دارد: هنگامی که همراه باautosshاستفاده شود، ssh قادر به درخواست گذرواژه یا عبارت عبور (passphrase) نخواهد بود. همچنین زمانی که-fبه کار رود، زمان «دروازه آغازین» (AUTOSSH_GATETIME را ببینید) روی ۰ تنظیم میگردد. -V- باعث
میشود
autosshشماره نسخه خود را نمایش دهد و خارج شود.
محیط (ENVIRONMENT)
به غیر از
فلگی که
برای تنظیم
پورت نظارت
بر اتصال
وجود دارد،
autossh برای
کنترل
قابلیتهای
خود از
متغیرهای
محیطی
استفاده
میکند. به
نظر میرسد
ssh همچنان در
حال تخصیص
حروف مختلف
به
گزینههای
خود است و
این روش
آسانترین
راه برای
جلوگیری از
تداخل
گزینههاست.
AUTOSSH_DEBUG- در صورت تنظیم این متغیر، سطح گزارشگیری روی LOG_DEBUG قرار میگیرد و اگر سیستمعامل پشتیبانی کند، syslog ورودیهای گزارش را روی خروجی خطای استاندارد (stderr) نیز ارسال میکند.
AUTOSSH_FIRST_POLL- مدت زمانی را که باید قبل از انجام اولین آزمون اتصال منتظر ماند، مشخص میکند. پس از آن، زمان عمومی نظرسنجی مورد استفاده قرار میگیرد (AUTOSSH_POLL را در زیر ببینید).
AUTOSSH_GATETIME- مشخص میکند که ssh چه مدت باید فعال بماند تا اتصال آن موفقیتآمیز تلقی شود. مقدار پیشفرض ۳۰ ثانیه است. توجه داشته باشید که اگر AUTOSSH_GATETIME برابر ۰ تنظیم شود، نه تنها رفتار دروازه آغازین خاموش میشود، بلکه autossh شکست نخستین اجرای ssh را نیز نادیده میگیرد. این امر میتواند هنگام اجرای autossh در زمان راهاندازی سیستم (بوت) مفید باشد.
AUTOSSH_LOGLEVEL- سطح گزارشگیری را متناسب با سطوح مورد استفاده در syslog تعیین میکند؛ یعنی مقادیر ۰ تا ۷ که در آن ۷ پرجزئیاتترین حالت است.
AUTOSSH_LOGFILE- مشخص
میکند که
autosshباید به جای syslog، از فایل گزارش تعیینشده استفاده کند. AUTOSSH_MAXLIFETIME- حداکثر تعداد ثانیههایی را که برنامه باید اجرا شود تنظیم میکند. پس از سپری شدن این مدت زمان، فرآیند فرزند ssh کشته شده و برنامه خارج میشود.
AUTOSSH_MAXSTART- تعداد دفعاتی را که ssh باید راهاندازی شود مشخص میکند. عدد منفی به معنای نامحدود بودن تعداد دفعات راهاندازی ssh است. مقدار پیشفرض -1 است.
AUTOSSH_MESSAGE- پیامی را به پیام echo ارسالی هنگام آزمایش اتصالها اضافه میکند.
AUTOSSH_NTSERVICE- (تنها در
سیگوین / Cygwin.)
زمانی که
روی “yes”
تنظیم شود،
autossh طوری
پیکربندی
میگردد که
به عنوان یک
سرویس NT تحت
cygrunsrv اجرا شود.
این کار فلگ
-Nرا در صورت تنظیم نبودن به ssh اضافه میکند، خروجی گزارشها را به stdout هدایت مینماید و رفتار خروج ssh را تغییر میدهد تا حتی در صورت خروج عادی نیز مجدداً راهاندازی شود. AUTOSSH_PATH- مسیر فایل اجرایی ssh را در صورتی که با مسیر کامپایلشده تفاوت داشته باشد مشخص میکند.
AUTOSSH_PIDFILE- شناسه فرآیند (PID) برنامه autossh را در فایل مشخصشده مینویسد.
AUTOSSH_POLL- زمان نظرسنجی اتصال را به ثانیه مشخص میکند؛ پیشفرض ۶۰۰ ثانیه (۱۰ دقیقه) است. مگر اینکه از AUTOSSH_FIRST_POLL استفاده شده باشد، زمان اولین نظرسنجی برابر با همین زمان نظرسنجی تنظیم خواهد شد. اگر زمان نظرسنجی کمتر از دو برابر مهلت زمانی شبکه (پیشفرض ۱۵ ثانیه) باشد، مهلتهای زمانی شبکه به نصف زمان نظرسنجی کاهش مییابند.
AUTOSSH_PORT- پورت نظارت بر اتصال را تنظیم میکند. این متغیر بیشتر برای زمانی در نظر گرفته شده که ممکن است ssh در آینده از فلگ -M برای منظوری دیگر استفاده کند. با توجه به این احتمال، مقدار AUTOSSH_PORT اولویت بیشتری نسبت به فلگ -M دارد و آن را بازنویسی میکند. مقدار ۰ عملکرد نظارت را خاموش میکند.
محیط (ENVIRONMENT)
دو گزینه
خاص در OpenSSH
وجود دارند
که هنگام
استفاده از
autossh بسیار
سودمند
هستند:
ExitOnForwardFailure=yes در
سمت کلاینت
برای
اطمینان از
موفقیت
فورواردها
هنگامی که autossh
فرض میکند
اتصال به
درستی
برقرار شده
است.
ClientAliveInterval در
سمت سرور
برای
اطمینان از
بسته شدن
سوکت شنود
در سمت سرور
در صورتی که
اتصال در
سمت کلاینت
بسته شود.
نویسنده (AUTHOR)
autossh توسط
Carson Harding نوشته
شده است.
همچنین ببینید (SEE ALSO)
ssh(1), ssh_config(5,) sshd_config(5,) ssh-add(1), ssh-agent(1), ssh-keygen(1), cygrunsrv(1).
| March 18, 2018 | Linux 6.12.113+deb13-amd64 |