MOSH(1) General Commands Manual MOSH(1)

mosh - پوسته متحرک با قابلیت رومینگ و پژواک محلی هوشمند

mosh [options] [--] [user@]host [command...]

دستور mosh (مخفف mobile shell یا پوسته متحرک) یک برنامه پایانه از راه دور است که از اتصال متناوب و ناپایدار پشتیبانی می‌کند، امکان رومینگ را فراهم می‌سازد، و پژواک محلی حدسی (speculative local echo) و ویرایش سطر کلیدهای فشرده‌شده توسط کاربر را ارائه می‌دهد.

در مقایسه با ssh، برنامه mosh بسیار پایدارتر است — اتصالات آن در طول خواب رفتن دستگاه و تغییر آدرس IP کلاینت برقرار می‌مانند — و پاسخ‌گوتر است، زیرا پروتکل آن در برابر از دست رفتن بسته‌ها مقاوم است و کلاینت می‌تواند اکثر کلیدها را بلافاصله و بدون معطلی برای رفت‌وبرگشت شبکه پژواک کند.

برنامه mosh از ssh برای برقراری اتصال به میزبان راه دور و احراز هویت با سازوکارهای موجود (مانند احراز هویت با کلید عمومی یا گذرواژه) استفاده می‌کند. سپس mosh برنامه کمکی غیرممتاز mosh-server را روی سرور اجرا می‌کند، اتصال SSH را می‌بندد و mosh-client را اجرا می‌نماید، که یک اتصال دیتاگرام طولانی‌مدت بر بستر UDP برقرار می‌کند.

برای بهبود پاسخ‌دهی، mosh یک مدل پیش‌بینی‌کننده از رفتار سرور را در پس‌زمینه اجرا می‌کند تا تأثیر هر کلید فشرده‌شده بر صفحه را حدس بزند. این مدل برای تایپ عادی، کلید برگشت (backspace)، و کلیدهای پیکان چپ و راست پیش‌بینی انجام می‌دهد. هنگامی که اطمینان داشته باشد، mosh پیش‌بینی‌ها را بدون انتظار برای پاسخ سرور نمایش می‌دهد. مدل پیش‌بینی‌کننده باید در هر سطر ترمینال و پس از هر نویسه کنترلی اعتبار خود را از نو اثبات کند، بنابراین mosh از پژواک گذرواژه‌ها یا دستورهای غیرپژواکی ویرایشگر خودداری می‌کند.

به طور پیش‌فرض، mosh پیش‌بینی‌های خود را فقط روی اتصالات با تأخیر زیاد و برای هموار کردن نوسانات شبکه نشان می‌دهد. (روی پیوندهایی با تأخیر طولانی‌تر، خانه‌های پیش‌بینی‌شده زیرخط‌دار می‌شوند تا زمانی که توسط سرور تأیید شوند.) خطاهای گاه‌به‌گاه پژواک ظرف یک رفت‌وبرگشت شبکه اصلاح می‌شوند و اثر ماندگاری نخواهند داشت.

برنامه mosh از فورواردینگ X یا کاربردهای غیرتعاملی SSH از جمله فورواردینگ پورت یا sshfs پشتیبانی نمی‌کند. mosh از پشت مترجم‌های آدرس شبکه (NAT) سمت کلاینت معمول کار می‌کند اما نیازمند عبور ترافیک UDP میان کلاینت و سرور است. به طور پیش‌فرض، mosh از پورت‌های بین 60000 تا 61000 استفاده می‌کند، اما به کاربر اجازه می‌دهد به جای آن یک پورت UDP خاص را درخواست کند.

در حال حاضر، mosh پشتیبانی محدودی از IPv6، شبکه‌های دوپشته‌ای (dual-stack) و سرورهایی با چندین آدرس دارد. در شروع نشست، یک آدرس واحد IPv4 یا IPv6 را برای اتصال در تمام طول عمر نشست انتخاب می‌کند.

برنامه mosh تمام تلاش خود را می‌کند تا لوکال (locale) با مجموعه نویسه UTF-8 را در کلاینت و سرور برقرار سازد. کلاینت باید متغیرهای محیطی مرتبط با لوکال داشته باشد که UTF-8 را مشخص کنند. mosh این متغیرهای کلاینت را از طریق خط فرمان خود به mosh-server ارسال می‌کند، اما در بیشتر موارد نیازی به استفاده از آن‌ها نخواهد بود. mosh-server ابتدا تلاش می‌کند تا از متغیرهای محیطی مرتبط با لوکال خود استفاده کند، که از پیکربندی پیش‌فرض سیستم (گاه /etc/default/locale) یا از ارسال شدن روی اتصال SSH به دست آمده‌اند. اما اگر این متغیرها استفاده از UTF-8 را تعیین نکنند، mosh-server متغیرهای محیطی مرتبط با لوکال کلاینت را اعمال کرده و دوباره تلاش خواهد کرد.

گزینه‌های با نام --experimental-* ممکن است در نسخه‌های آینده Mosh تغییر کنند یا حذف شوند؛ طراحی یا عملکرد آن‌ها هنوز نهایی نیست.

دستوری که روی میزبان راه دور اجرا می‌شود. به طور پیش‌فرض، mosh یک پوسته ورودی (login shell) را اجرا می‌کند.
مسیر برنامه کمکی کلاینت روی ماشین محلی (پیش‌فرض: "mosh-client")
دستور اجرای برنامه کمکی سرور روی ماشین راه دور (پیش‌فرض: "mosh-server")

برنامه کمکی سرور غیرممتاز است و می‌تواند در دایرکتوری خانگی کاربر نصب شود.

از این گزینه می‌توان برای تنظیم متغیرهای محیطی سرور با استفاده از دستور env(1) به عنوان لفاف دستور واقعی سرور استفاده کرد. برای متغیرهای محیطی موجود به mosh-server(1) مراجعه کنید.

دستور OpenSSH برای اجرای از راه دور mosh-server روی ماشین راه دور (پیش‌فرض: "ssh")

می‌توان یک پورت جایگزین ssh را به عنوان مثال با --ssh="ssh -p 2222"; مشخص کرد.

--no-ssh-pty فعال یا غیرفعال کردن استفاده ssh از pty هنگام اتصال به میزبان راه دور. حالت پیش‌فرض، فعال است.
استفاده از پژواک محلی حدسی را کنترل می‌کند. مقدار WHEN به طور پیش‌فرض `adaptive' است (نمایش پیش‌بینی‌ها روی پیوندهای کندتر و برای هموار کردن اختلالات شبکه) و همچنین می‌تواند `always` یا `never' باشد.

متغیر محیطی MOSH_PREDICTION_DISPLAY این تنظیم را به صورت دائمی کنترل می‌کند و می‌تواند همین سه مقدار را بپذیرد.

حتی در حالت `always'، برنامه mosh تنها زمانی پیش‌بینی‌ها را نشان می‌دهد که مطمئن باشد. این عموماً بدین معناست که پیش‌بینی قبلی در همان سطر ترمینال بدون فشردن نویسه‌های کنترلی میانی توسط سرور تأیید شده است.

مترادف برای --predict=always
مترادف برای --predict=never
هنگامی که پیش‌بینی فعال است، پژواک محلی حدسی را قبل از متن موجود درج نکن، بلکه آن را بازنویسی کن.

متغیر محیطی MOSH_PREDICTION_OVERWRITE نیز در صورتی که مقدار آن 'yes' باشد، این ویژگی را فعال می‌کند.

مترادف برای --predict-overwrite
فقط استفاده از IPv4 برای اتصال SSH و نشست Mosh.
فقط استفاده از IPv6 برای اتصال SSH و نشست Mosh. این حالت و حالت‌های بعدی نیازمند ماژول‌های Perl از نوع IO::Socket::IP یا IO::Socket::INET6 هستند.
تشخیص خودکار IPv4 یا IPv6 برای میزبان‌هایی که تنها در یک خانواده دارای آدرس هستند. میزبان‌هایی که دارای هر دو آدرس IPv4 و IPv6 باشند با خطا مواجه خواهند شد و نیازمند اجرای مجدد mosh با گزینه --family دیگری خواهند بود.
انتخاب یک آدرس از بین تمام آدرس‌های موجود IPv4 یا IPv6، حتی برای میزبان‌های دوپشته‌ای (dual-stack). این راحت‌ترین گزینه است، اما هنگام رومینگ با سرورهای دوپشته‌ای نیازمند اتصال دوپشته‌ای و استفاده از نسخه 1.2.5 یا بالاتر Mosh روی سرور است.
مشابه --family=all، اما ابتدا تلاش برای اتصال به آدرس‌های IPv4 انجام می‌شود. این حالت پیش‌فرض است.
مشابه --family=all، اما ابتدا تلاش برای اتصال به آدرس‌های IPv6 انجام می‌شود.
-4
مترادف برای --family=inet
-6
مترادف برای --family=inet6
استفاده از یک پورت یا محدوده پورت خاص UDP سمت سرور، برای مثال اگر این تنها پورتی باشد که از طریق فایروال به سرور هدایت (forward) می‌شود. با -p 0، سرور اجازه می‌دهد سیستم‌عامل یک پورت UDP در دسترس را انتخاب کند. در غیر این صورت، mosh پورتی بین 60000 تا 61000 را انتخاب خواهد کرد. لطفاً توجه داشته باشید که این گزینه بر پورت سمت سرور مورد استفاده SSH تأثیری ندارد.
کنترل آدرس IP که mosh-server به آن متصل (bind) می‌شود.

حالت پیش‌فرض `ssh' است، که در این حالت سرور از همان آدرس IP که اتصال SSH از آن برقرار شده است پاسخ خواهد داد (همان‌طور که در متغیر محیطی SSH_CONNECTION یافت می‌شود). این برای سرورهایی با چند کارت شبکه (multihomed) مفید است.

با --bind-server=any، سرور روی رابط پیش‌فرض پاسخ خواهد داد و به یک آدرس IP خاص متصل نمی‌شود. این حالت می‌تواند در صورتی مفید باشد که اتصال از طریق sslh یا ابزار دیگری برقرار شود که باعث می‌شود اتصال SSH به نظر برسد از localhost آمده است.

با --bind-server=IP، سرور تلاش خواهد کرد به آدرس IP مشخص‌شده متصل (bind) شود.

رشته راه‌اندازی اولیه smcup و رشته پایان راه‌اندازی rmcup را به پایانه کلاینت ارسال نکن. در بسیاری از پایانه‌ها، این گزینه حالت صفحه جایگزین (alternate screen mode) را غیرفعال می‌کند.
اجرای محلی mosh-server، بدون استفاده از ssh. این گزینه نیازمند آن است که آرگومان host یک آدرس عددی محلی IPv4/IPv6 باشد. این گزینه برای آزمایش مفید است.
روش مورد استفاده برای پیدا کردن آدرس IP که mosh-client به آن متصل می‌شود را انتخاب می‌کند.

حالت پیش‌فرض proxy است، که از گزینه --ssh-proxy-command در SSH برای تولید و گزارش آدرس دقیقی که ssh برای اتصال به میزبان راه دور استفاده می‌کند، بهره می‌برد. این گزینه عموماً بیشترین سازگاری را با میزبان‌ها و سایر گزینه‌های پیکربندی‌شده در فایل‌های پیکربندی ssh دارد. با این حال، ممکن است برای برخی پیکربندی‌ها یا محیط‌هایی که یک میزبان واسط (bastion) در ssh ترافیک را به ماشین راه دور فوروارد می‌کند، کار نکند. این گزینه تنها با OpenSSH کار می‌کند.

با remote، از متغیر محیطی SSH_CONNECTION سرور استفاده خواهد شد. این برای محیط‌هایی که در آن‌ها فورواردینگ ssh استفاده می‌شود یا گزینه --ssh-proxy-command برای اهداف دیگر به کار می‌رود، مفید است.

با local، برنامه Mosh نام میزبان ارائه‌شده در خط فرمان خود را بررسی و حل می‌کند (resolve) و از آن آدرس برای هر دو اتصال ssh و Mosh استفاده می‌نماید. این گزینه هرگونه پیکربندی مربوط به همان نام میزبان در ssh_config را نادیده می‌گیرد.

نویسه گریز پیش‌فرضی که توسط Mosh استفاده می‌شود ASCII RS (کد دهدهی 30) است. این نویسه معمولاً در صفحه‌کلیدهای انگلیسی به صورت Ctrl-^ یا Ctrl-Shift-6 تایپ می‌شود. کاربران صفحه‌کلیدهای غیرانگلیسی ممکن است تایپ نویسه گریز پیش‌فرض را دشوار یا غیرممکن بیابند، و ممکن است نیاز به تغییر نویسه گریز داشته باشند. توضیحات MOSH_ESCAPE_KEY را در زیر ببینید. در این توضیحات، نویسه گریز پیکربندی‌شده به صورت Esc نشان داده شده است.

بسته به اینکه نویسه گریز قابل چاپ باشد یا نباشد، دو حالت اندکی متفاوت برای توالی‌های گریز وجود دارد.

اگر نویسه گریز یک نویسه قابل چاپ باشد، باید مانند OpenSSH با یک خط جدید (newline) آغاز شود. برای ارسال خودِ نویسه گریز، آن را دو بار تایپ کنید. اگر نویسه گریز روی ~ تنظیم شده باشد، رفتار mosh بسیار مشابه OpenSSH خواهد بود.

اگر نویسه گریز یک نویسه کنترلی غیرقابل چاپ باشد، از هیچ پیشوندی استفاده نمی‌شود و نویسه گریز در هر زمانی شناسایی می‌شود. برای ارسال خودِ نویسه گریز، ابتدا نویسه گریز و سپس نویسه ASCII متناظر با آن را تایپ کنید (برای Ctrl-^ کلید ^ را تایپ می‌کنید، و برای Ctrl-B کلید B را تایپ می‌کنید).

توالی گریز برای بستن اتصال Esc . است. توالی Esc Ctrl-Z کلاینت را تعلیق می‌کند. هر توالی دیگری هر دو نویسه را مستقیماً به سرور منتقل می‌نماید.

این متغیرها در واقع توسط خود mosh(1) تفسیر نمی‌شوند، بلکه به mosh-server(1) منتقل می‌گردند. آن‌ها در اینجا برای سهولت استفاده شرح داده شده‌اند.

در صورت تنظیم، نویسه گریز مورد استفاده برای دستورات محلی را پیکربندی می‌کند. نویسه گریز می‌تواند هر نویسه ASCII در محدوده 1 تا 127 باشد. این متغیر باید با یک نویسه واحد واقعی ASCII تنظیم شود. نویسه‌های کنترلی با نویسه کنترلی واقعی ASCII تنظیم می‌شوند، نه با نمایش قابل چاپ مانند "^B".
پژواک محلی را مطابق توضیحات بالا کنترل می‌کند. فلگ خط فرمان این متغیر را نادیده می‌گیرد (override می‌کند).
در صورت تنظیم، از اضافه کردن پیشوند "[mosh]" به عنوان پنجره جلوگیری می‌کند.

mosh-client(1), mosh-server(1).

صفحه خانگی پروژه: https://mosh.org

برنامه mosh توسط Keith Winstein <mosh-devel@mit.edu> نوشته شده است.

لطفاً باگ‌ها را به mosh-devel@mit.edu گزارش دهید. کاربران همچنین می‌توانند در فهرست پستی mosh-users@mit.edu در نشانی زیر عضو شوند:
http://mailman.mit.edu/mailman/listinfo/mosh-users

April 2013