Calm Hill My Random Thoughts

Installing and Setting up Mosh

Server တွေနဲ့ အလုပ်လုပ်ရတဲ့ လူတယောက်အနေနဲ့ SSH နဲ့ဆိုတာက မပတ်သက်ချင်လို့မရ တခါတခါ အရေးပေါ်တဲ့အခါဆို ရောက်ရာအရပ်ကနေ ဝင်လို့ရဖို့လည်း လိုအပ်တဲ့အခါရှိတယ်။ SSH ကိုသုံးဖို့အတွက် Stable ဖြစ်တဲ့ Internet Connection လိုအပ်တယ် ပြတ်သွားလို့မရဘူး သူ့ရဲ့အလုပ်လုပ်ပုံကိုက Key တခုနှိပ်လိုက်ရင်ကိုပဲ Server ကို တခါသွားတယ် ဟိုဘက်ကနေ Confirm ဖြစ်တယ်ဆိုမှ Client ဘက်မှာ ရိုက်လိုက်တဲ့ စကားလုံးကိုပြတယ်။ တိကျတဲ့အတွက် ကောင်းတယ်ဆိုပေမယ့် အင်တာနက်နှေးရင် အလုပ်လုပ်ရတာ အတော်နှေးတယ် Command ရှည်ရှည်တခု အမြန်ရိုက်လိုက် Screen မှာ ပေါ်မလာသေးတော့ မှားလားမှန်လားမသိ Enter လည်း ရပ်ပြီးတော့ နှိပ်လို့မရတော့ ကော်ဖီလေးဘာလေးသောက် ဘေးနားမှာလူရှိရင် စကားလေးဘာလေးပြော Screen ပေါ်မှာ ပေါ်လာပြီဆိုမှ အလုပ်ဆက်လုပ်ရတယ် နှေးတာက စောင့်လို့ရပေမယ့် Connection ခဏပြတ်သွားလိုက်တာနဲ့ လုပ်လက်စအလုပ်တွေ အကုန်လုံးပါသွားပြီး Connect ပြန်လုပ်ရပြန်ရင်တော့ ခန္တီပါရမီနဲ့ အတန်အသင့် ပြည့်စုံဖို့လိုတာပေါ့။

ဒီခေတ်ကြီးထဲမှာ အဲလောက်နှေးတဲ့ Stable မဖြစ်တဲ့ Connection ရှိသေးလားမေးရင် ရှိတယ်ပဲပြောရမယ် အထူးသဖြင့် Mobile Data နဲ့ အလုပ်လုပ်ရရင် ဖြစ်လေ့ရှိတယ် ရထားပေါ်မှာတို့ ရန်ကုန်ရောက်လို့ လိုင်းကကောင်းလိုက် မကောင်းလိုက်ဖြစ်နေလို့ Wifi နဲ့ Mobile Data ပြောင်းသုံးချင်တာတို့ ကဒ်ကြီး ၃ ပါး အလဲအလှယ် လုပ်ချင်တာတို့ဆို Connection မပြတ် အလုပ်မပျက်ပဲနဲ့ လုပ်လို့မရပါဘူး။ လွန်ခဲ့တဲ့နှစ်အနည်းငယ်က Mobile Shell (Mosh) ဆိုပြီး စပြီးတော့ထွက်လာတော့ စမ်းကြည့်သေးတယ် သိပ်အဆင်မပြေတာနဲ့ စမ်းကြည့်ဖြစ်တယ် ဆိုရုံလောက်ပဲ အခုအချိန်မှာတော့ Mosh ဟာ အတော်ကို Stable ဖြစ်နေပြီဖြစ်လို့ SSH နဲ့ တိုက်ရိုက်မသုံးတော့ပဲ Connection မကောင်းတဲ့အခါ Mosh ကိုပြောင်းသုံးနေတယ်။ Mosh က တခုအဆင်ပြေတာက Service တခုအနေနဲ့ Install လုပ်ထားစရာလည်း မလိုအပ်ဘူး။ သူအလုပ်လုပ်ပုံက ပထမဆုံးအနေနဲ့ SSH နဲ့ Connect လုပ်ပြီးတော့ Authentication တွေလုပ်တယ် ပြီးတာနဲ့ Login ဝင်လာတဲ့ User အနေနဲ့ UDP Port 60000-61000 အတွင်းက လွတ်နေတဲ့ Port တခုခုကနေ Mosh Server ကို Start လုပ်ပြီးတော့သုံးတာပဲ UDP အပေါ် အခြေခံပြီးတော့ Connection Stable မဖြစ်တာကို ခံနိုင်ရည်ရှိအောင်လုပ်ထားတယ်။ အဲဒီတော့ SSH ကို အစားထိုးတာတော့ မဟုတ်ပါဘူး SSH မရှိလို့တော့မရဘူး။

Mosh

https://mosh.org

Mosh ကို Install လုပ်ရတာက မခက်ပါဘူး Service အနေနဲ့ လည်းမလိုတော့ ဘယ် User ရဲ့ Permission နဲ့ Run နေမှာလည်းတွေလည်း စဉ်းစားဖို့မလိုဘူး။ ကိုယ်သုံးလေ့ရှိတဲ့ OS အမျိုးအစားတွေမှာ Install လုပ်တာကိုအောက်မှာ ပြထားပါတယ် တခြား OS တွေသုံးရင်တော့ Mosh ရဲ့ Official Website မှာပဲ သွားကြည့်ပါ ကိုယ်တိုင် Build လုပ်ချင်လည်းရပါတယ်။

Ubuntu

apt install mosh

Arch

pacman -S mosh

Mac

brew install mosh

Install လုပ်ပြီးရင် နည်းနည်းပြဿနာလုပ်နိုင်တာက Firewall တခုပဲရှိတယ် Mosh ဟာ UDP Port 60000-61000 အတွင်းမှာသုံးတဲ့အတွက် Firewall တွေကို အဲဒီ Port Range ကို ဖွင့်ပေးဖို့လိုမယ်။ Range အရဆိုရင် 1000 ရှိတဲ့အတွက် များလွန်းတယ်ထင်ရင်တော့ လိုအပ်သလောက်ပဲ ပေးချင်ရင်ပေးပါ တခုပဲသတိထားရမှာက Mosh Server ဟာ User Level မှာ Start လုပ်တဲ့အတွက် Users 10 ယောက်ရှိတာ Port ၅ ခုပဲဖွင့်ထားရင် ၁၀ ယောက်လုံးတော့ တပြိုင်နက်ထဲသုံးလို့မရနိုင်ဘူး။ ၁ ယောက်ထဲဆိုပြီး ၁ခုပဲဖွင့်ထားပြန်ရင်လည်း အကြောင်းတစုံတရာကြောင့် ဖွင့်ထားတဲ့ Server က Shutdown မဖြစ်ပဲကျန်နေတဲ့အချိန် နောက်ထပ် Connection တခုထပ်ပြီးတော့ Connect လုပ်လို့မရတာလည်း ဖြစ်ကောင်းဖြစ်နိုင်တယ် အရေအတွက်ကတော့ ကိုယ့်လိုအပ်ချက်နဲ့ ကိုယ်ပဲဆုံးဖြတ်ပါ။ ကိုယ့် Install လုပ်ထားတဲ့ Firewall တွေမှာ ဖွင့်ပေးပြီးရင်လည်း EC2 တို့လို အပြင်ဘက်မှာ နောက်ထပ် Firewall တွေရှိသေးရင်လည်း ဖွင့်ဖို့မမေ့ပါနဲ့။

iptables

iptables -I INPUT 1 -p udp --dport 60000:61000 -j ACCEPT

Usage ကတော့ SSH Command နဲ့သိပ်ပြီးမကွာတော့ ထူးထူးခြားခြားတော့မရှိပါဘူး သာမန်အနေနဲ့ Username/Password နဲ့ Hostname ဆိုရင် သုံးလို့ရပါလိမ့်မယ်။ တကယ်လို့များ SSH Command မှာ Arguments တွေထည့်ပေးဖို့ ဥပမာဆိုရင် Private Key နဲ့ Login ဝင်ချင်တာတို့ စသည်ဖြင့်ပေါ့လေ လိုတယ်ဆိုရင်တော့ --ssh မှာ SSH Command ကို ကိုယ်လိုချင်တဲ့ Arguments တွေနဲ့ ထည့်ပေးလို့ရတယ်လို့ပဲ နည်းနည်းမှတ်ထားဖို့ လိုအပ်ပါလိမ့်မယ်။

Usage

mosh username@hostname
(or)
mosh --ssh="ssh -i /path/to/privatekey" username@hostname

ပြေးရင်းလွှားရင်းနဲ့ သုံးဖို့လိုတဲ့လူတွေအတွက် Mosh ကို Support လုပ်တဲ့ iOS Blink ဆိုတဲ့ App ရှိတယ် ဝယ်မယ်ဆိုရင် AppStore မှာရှာကြည့်ပါ စျေးနည်းနည်းတော့များတယ်။ App က Opensource ဖြစ်တဲ့အတွက် ကိုယ်တိုင် Build လုပ်သုံးနေတယ် Upgrade လုပ်ချင်ရင် Source တွေကို Update လုပ်ပြီး ကိုယ့်ဟာကိုယ်ပြန်ပြီး Build လုပ်နဲ့ဆိုတော့ ပြင်ချင်တာ ပြင်လို့ရပေမယ့် နည်းနည်းတော့ အလုပ်ရှုပ်တယ် AppStore က ဆိုရင်တော့ Update အလွယ်တကခု လုပ်လို့ရလိမ့်မယ် Developer ကို ကျေးဇူးတင်တဲ့အနေနဲ့ အားပေးတဲ့အနေနဲ့ ဝယ်တော့ဝယ်ဦးမှာပါ ဘယ်လို Build လုပ်လဲကတော့ မရေးတော့ပါဘူး Xcode ရှိရင် သိပ်ပြီးတော့ ခက်ခက်ခဲခဲမဟုတ်ဘူး Build လုပ်လို့ရလိမ့်မယ်။

iOS

https://github.com/blinksh/blink