به جای اس‌اس‌اچ از موشی استفاده کنید

اگه از اس‌اس‌اچ استفاده می‌کنید احتمالا تا حالا شده فحش به زمین و زمان بدید بخاطر تاخیرهای گهگاه خیلی زیادش که یک دستور رو که تایپ میکنید چند ثانیه بعد تازه می‌بینید چی نوشتید، از اونور برادرا هم که حسابی روش حساس شدن و انگولکش کردن، قطعی‌هاشم زیاد شده و از اون مهمتر با دی‌سی شدن از نت، ارتباط با سرور مقصد رو از دست خواهید داد!

Mosh مخفف Mobile Shell دقیقا با همین هدف نوشته شده، اینبار بجای TCP با استفاده از پروتکل UDP اتصال به سرور مقصد برقرار میشه  و اولین ویژگی که اون رو حس خواهید کرد، زنده بودن محیطه، انگار نشستید پشت مانیتور و دارید تایپ می‌کنید دستور رو، ویژگی دوم اینه که با عوض شدن آی‌پی حتی اتصال به سرور مقصد قطع نمیشه! اگرم که آی‌اس‌پی تون هعی بازیش گرفته و چراغ لینک مودم‌تون خاموش روشن می‌شه دیگه خیالتون راحته که از نو نباید به سرور مقصد وصل شید.

از اون مهمتر اینه که حتی کاربر معمولی هم می‌تونه از موشی استفاده کنه و لازم نیست حتما مجوز روت رو برای استفاده اینکار داشته باشید.

موش حاصل کار یکی از دانشجوهای دانشگاه Mit رونوشت به خودمون و دانشگاهامون که هیچ خروجی ازشون نداریم (داریم؟)

نمودار بالا هم مقایسه زمان پاسخ‌دهی در ssh و mosh رو نشون می‌ده که خب ۵ و ۱۷۳ میلی ثانیه رو مقایسه کنید با ۵۰۰ میلی ثانیه اس‌اس‌اچ! تقاوت خیلی خیلی محسوسه.

نکته ای که هست اینه که mosh برای وصل شدن در ابتدا از ssh استفاده میکنه و برای همین اگه بدون وارد کردن پسورد به سرور مقصد وصل می‌شید با mosh هم مشکلی نخواهید داشت.

نصب Mosh کار خیلی سختی نیست و احتمالا هر دیسترویی که داشته باشید اون رو درون مخازن می‌تونید گیر بیارید!

اگرم روی سرور فایروال دارید ، پورت‌های ورودی UDP بین ۶۰ هزار تا ۶۱ هزار رو باز کنید تا کلاینت بتونه به سرور وصل شه.

موش
موش

برای اتصال به سرور هم مشابه ssh باید همچین دستوری رو بزنید!

mosh [email protected]

‫پی‌نوشت: مرسی از دوست خوبم ebraminio بخاطر معرفی این برنامه خوب:ی

دیدگاه‌ها

12 پاسخ به “به جای اس‌اس‌اچ از موشی استفاده کنید”

  1. مهران نیم‌رخ
    مهران

    ایول ابزار عالی ای بود :)
    کاش میشد باهاش یه جوری socks سرور هم مثل ssh درست کرد

    1. نوید نیم‌رخ
      نوید

      فکر می‌کنم یه همچین چیزی توی roadmap شون باشه :ی

  2. SHahab نیم‌رخ

    مرسی از مطالب خوبت آقا نوید
    فقط چرا باید یک رنج پورت رو آزاد کنیم؟ مگه این برنامه از چند پورت استفاده میکنه؟ نمیشه فقط همون یکی رو باز کرد؟

    1. نوید نیم‌رخ
      نوید

      نه احتمالا چند نفر که وصل بشن از پورتای مختلف استفاده میکنه، اگر بخوای از پورت خاصی فقط استفاده کنه هم میشه.
      کافیه اینطوری استفاده کنی mosh -p 60000 127.0.0.1 تا از طریق ۶۰ هزار وصل شه.

  3. hos7ein نیم‌رخ

    درود بر شما
    مطلب جالبی بود.
    سپاس

  4. رضا نیم‌رخ
    رضا

    سلام
    مطلب خوب و کلی بود من متوجه نشدم بعد از نصب چیکار باید بکنم
    برای مثلا من یه سرور دارم که می خوام ازش ترمینال بگیریم باید هم روی سرور و کلاینتم این برنامه نصب بشه؟؟؟؟
    حالا اگه پورت پیش فرض ssh سرور من استاندارد نباشه مثلا بجای 22 از 2240 استفاده کرده باشم چطوری می شه از این موش استفاده کرد؟؟؟
    باهاش می شه تونل http هم زد یا نه؟؟؟‌ من با putty راحت اینکار را می کنم و همه سایت ها را با ip سرور باز می کنم

  5. رضا نیم‌رخ
    رضا

    خب تست کردم با پارامتر –ssh=”ssh -p 2240″ می شه با یه پورت خاص وصل شد اما باید روی سرور نصب بشه وسرور من centos هست و توی مخازنش نصب نشده چطوری می شه نصبش کرد و درباره این roadmap هم اگه می شه بیشتر توضیح بدید چطوری می شه تنظیم کرد؟؟؟‌

    1. منصور نیم‌رخ
      منصور

      دوست عزیز شما باید مخازن Centosplus رو فعال کنی براحتی میتونی اونوقت بگیریش
      احتمالا هم vps داری از redstation :-)

  6. رضا نیم‌رخ
    رضا

    بالاخره دستی فایلش را از سایت pkgs.org دانلود کردم پیشنیاز هم protobuf که اونم از همونجا گرفتم و دستی نصب کردم پورت هم از 60000 تا 60005 باز کردم اما وصل نمی شه یعنی وصل می شه و رمز هم می گیره بعدش دیگه هیچی ندیدم خطا می ده و باز نمی کنه سرور هم ip ما را بلاک می کنه:D
    توی سرور هم دستور mosh-server را می زنم ببین چی میاد
    ]# mosh-server
    mosh-server needs a UTF-8 native locale to run.

    Unfortunately, the local environment ([no charset variables]) specifies
    the character set “US-ASCII”,

    The client-supplied environment ([no charset variables]) specifies
    the character set “US-ASCII”.

    LANG=
    LC_CTYPE=”POSIX”
    LC_NUMERIC=”POSIX”
    LC_TIME=”POSIX”
    LC_COLLATE=”POSIX”
    LC_MONETARY=”POSIX”
    LC_MESSAGES=”POSIX”
    LC_PAPER=”POSIX”
    LC_NAME=”POSIX”
    LC_ADDRESS=”POSIX”
    LC_TELEPHONE=”POSIX”
    LC_MEASUREMENT=”POSIX”
    LC_IDENTIFICATION=”POSIX”
    LC_ALL=
    خلاصه اش یعنی utf-8 را ساپورت نمی کنه اینم شد حرف به نظرتون مشکلش چی می تونه باشه؟؟؟؟
    البته بعد از اجرای این دستور توی سرور دیگه این بلاک نشدم توی کلاینت هم همین پیغام اومد می گه باید زبانش را بکنم اسکی تنطیمات سرور را به هم بزنم کلی سایت ممکنه بره روی هوا خطری نداره دقیقا باید چیکار کنم چه اتفاقی داره میوفته ؟؟؟!!!!

    1. نوید نیم‌رخ
      نوید

      سلام :) اقا سنت او اس رو که بهتره مخزن اضافه کنی :ی همه چی توش هست :ی لازم نیست بری دستی هعی بگردی بگیری‌:ی

      بعد این پیغامم سمت کلاینت این متغیر رو تو bash ست کنی فک کنم کارت راه بیفته

      export LANGUAGE=en_US.utf8
      export LC_ALL=en_US.utf8

      برای اینکه هر بارم مجبور نشی وارد کنی برو توی bashrc وارد کن:ی

  7. امیر نیم‌رخ
    امیر

    از نظر امنیتی چطوره؟ وقتی گفتید اگر اینترنت قطع بشه دوباره نمی‌خواد وارد بشید یه کم حس کم امنیتی داد اگه این وسط کسی قرار بگیره.

    1. منصور نیم‌رخ
      منصور

      امنیتش مشکلی نداره که برادر من. فقط اینکه سشن شما با ۲ تا تایم‌آوت اکسپایر نمیشه و اینکه کسی توی مسیر بگیره؟! ارتباط شما کاملا رمزنگاری شده‌ست

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *