Thursday, January 30, 2014

Configuring SSH

               အရင်တုန်းကတော့ Server တွေဆီကို console,remote လှမ်းဝင်တဲ့အခါမှာ telnet ဆိုတဲ့ programကိုသာ အသုံးများကြပါတယ်။ နောက်ပိုင်း telnet သည် data transfer အလုပ်လုပ်လျှင် plain text unencrypted ပုံစံ နှင့် သာ အလုပ်လုပ်သောကြောင့် ssh (Secure Shell) program ကို အသုံးများလာပါတယ်။Linux မှာတော့ default အနေနဲ့  ပါလာပြီး windows မှာတော့ putty လိုမျိူးး program တွေရှိပါတယ်။ssh ရဲ့ အားနည်းချက်ကတော့ encrypt သုံးသောကြောင့် CPU loading ပိုဖြစ်နိုင်တာတော့ရှိပါတယ်။

                ssh ရဲ့ အလုပ်လုပ်ပုံမှာ public key , private key ပုံစံနှင့် အလုပ်လုပ်ပါတယ်။ ssh session between two machine တွင် တည်ဆောက်ဖို့ရန် အတွက် machine နှစ်ခုစလုံးမှာ public,private key ရှိထားရပါမယ်။ ထိုထဲမှာမှ private ကို သိမ်းထားပြီး public key နှင့် exchange လုပ်ပြီး အသုံးပြုပါတယ်။ ကျွန်တော်တို့ ssh encryption algorithms မှာ RSA နှင့် DSA key ကို အသုံးပြုပါတယ်။
http://security.stackexchange.com/questions/5096/rsa-vs-dsa-for-ssh-authentication-keys




အရင်ဆုံး ssh ကို install လုပ်ရန် "#yum install openssh" နှင့်လုပ်ပါမည်။

ပြီးလျှင်တော့ terminal မှာ "#ssh root@192.168.10.11" ဆိုပြီး ရိုက်လျှင် အရင်ဆုံး တောင်းမှာသည် user name and password မဟုတ်ပဲ အခု မှ စ initiate လုပ်ခြင်းကြောင့် စစချင်း မှာ cannot established ဖြစ်နေပြီး တစ်ဖက် မှ public key ကို ကိုယ့်စက်ထဲတွင် trusted အဖြစ် လက်ခံမလား ဆိုတာကို "Yes/No" question ဖြင့် မေးမည်ဖြစ်သည်။ ကိုယ်က yes လုပ်လိုက်ပါက တစ်ဖက်မှ public key သည် မိမိစက်ရဲ့ ".ssh" folder ထဲတွင် know_host file တစ်ဖိုင်အနေနှင့် ရောက်နေမည်ဖြစ်သည်။ ပြီးမှသာ တစ်ဖက် computer username , password တောင်းပြီး ဝင်ရမှာဖြစ်ပါသည်။နောက်ပိုင်း ဝင် ရင်တော့ ကိုယ့်ဆီမှာ တစ်ဖက်က public key ရှိပြီးသားမို့ username,password ပဲ လာတောင်းတော့ မှာ ဖြစ်ပါတယ်။






      ssh က ပုံမှန်ဆို အခု install လုပ်ပြီးတာနဲ့ public key exchange လုပ်ပြီး စတင် အသုံးပြုလို့ရပြီ ဖြစ်ပါတယ်။ အခု နောက်ထပ် tutorial ပုံစံကတော့ ဆိုပါတော့ ကိုယ်ဆီ မှာက console လှမ်းဝင်ရမည့် Server တွေက အများကြီး တစ်ခေါက်ဝင်တိုင်း username,password လိုက်ရိုက်နေရရင် အဆင်မပြေဘူးပေါ့။ အဲ့လို အခြေနေ မှာဆိုရင် ကျွန်တော်တို့က ssh auto key generate လုပ်ပေးတာကို မသုံးပဲ ကိုယ့်ဘာသာကို ssh key generate လုပ်မယ် ပြီး ရင် ရလာတဲ့ public key ကို ကိုယ်လှမ်းဝင်မယ့် စက်တွေမှာ ထားထားလိုက် ရင် နောက်ပိုင်း username,password မတောင်းတော့ပဲ တစ်ခါထဲ direct log in ဖြစ်သွားမှာပါ။ တစ်ခုရှိတာက trusted computer ဖြစ်ရမှာပါ မဟုတ်ရင်တော့ ထို computer နဲ့တစ်ခြားသူတွေက တိုက်ရိုက် ဝင်နိုင်ပါလိမ့် မယ်။

အရင်ဆုံး အခု ပုံမှာ "centos02"ကနေ တစ်ဖက်မှ ကွန်ပျူ တာ "centos01" ကို username,password  နှင့် ဝင်စရာမလိုအောင် "#ssh-keygen" ဖြင့်လုပ်ဆောင်မှာဖြစ်ပါတယ်။ လုပ်ဆောင်ပုံကို အောက်ပုံ တွင် ပြထားပါသည်။ထို နေရာမှာ default key သည် rsa နှင့် လုပ်ဆောင်ပါတယ်။ ပုံထဲတွင် passphrase ထည့်ရမည့်နေရာပါပါတယ် ၎င်းသည် password မဟုတ်ပါ ပြောချင်သည်က အခု direct log in ဝင်နိုင်သော စက်ပျောက်ဆုံးလျှင်တောင်မှ အသုံးပြုသူသည် passphrase  ထည့်ထားခဲ့လျှင် direct တည်းဝင်လို့ ရမည်မဟုတ်ပါ။ပုံထဲမှာ တော့ default အတိုင်း မထည့်ထားဘဲ သွားထားပါတယ်။
  • အခု key generate လုပ်ပြီးသွားတဲ့အချိန်မှာ စက်ထဲ တွင်ရှိသော ".ssh folder" ထဲတွင် "id_rsa (private) " and "id_rsa.pub (public) " ဆိုပြီး key နှစ်ခု ထွက်လာမည်ဖြစ်သည်။ ထို့နောက် မှ အခု ရရှိလာတဲ့ rsa public key ကို တစ်ဖက် log in ဝင်မည့် ဘက်သို့ လှမ်းထည့်မည် ဖြစ်ပါတယ်။ လှမ်း ထည့် ရာတွင် "#ssh-copy-id" command ကို အသုံးပြု မည် ဖြစ်သည်။ ထိုသို့ ပြုလုပ်ပြီး လျှင် တစ်ဖက် ".ssh" folder တွင် "authorized_keys" file တစ်ဖိုင် ရောက်ရှိသွားမည် ဖြစ်သည်။ ထို file ကို ဖွင့်ဖတ်ပါက အဆုံးတွင် log-in လှမ်းဝင်မည့် စက် hostname/ip address ကို တွေ့နိုင်ပါသည်။





အခု တစ်ခြားစက်ဖြစ်သော "centos01" ဖက်ကို သွားကြည့်လျှင် .ssh folder အောက်တွင် authorized_keys file ရောက်နေမည်ဖြစ်သည်။
  • ဒီတစ်ခါ centos02 မှ centos01 သို့ ssh နှင့် ပြန်ဝင်ကြည့် ပါက username,password တောင်းမှာ မဟုတ်တော့ဘဲ တိုက်ရိုက်ဝင် သွား မည်ဖြစ်ပါသည်။


Using  SSH Script For Logging into Remote Machine
             
           အခု ဒီတစ်ခေါက်ကတော့ ကျွန်တော်တို့  Public Key Exchange လုပ်ပြီးတော့ အလွယ်တကူဝင်နိုင်တာထက် အပြင် အခု Script တစ်ဖိုင် run ရုံနဲ့ login ဝင်နိုင်အောင် လုပ်မှာ ဖြစ်ပါတယ်။ ဒီအကြောင်းကို ကျွန်တော် လဲ  သင်တန်း မှာ ဆရာက စဉ်းစားခိုင်း လုပ်ကြည့် လို့ ပြောလို့ google ပြီး ရှာထားခြင်းဖြစ်ပါတယ်။ အသုံးများ ဆုံး နည်းလမ်း နှစ်ခု ရှိပါတယ် တစ်ခု က "sshpass" ဆိုတဲ့ package ကို သွင်းပြီး အသုံးပြု မှာ ဖြစ်ပြီး နောက် တစ်ခု ကတော့ "expect program" ကိုအသုံးပြု မှာ ဖြစ်ပါတယ်။

Using with sshpass Package

အရင်ဆုံး  sshpass rpm package ကို install လုပ်ပါမည်။ terminal ထဲတွင် "#yum install sshpass" ဆို ပြီး ရိုက်ပါ။ 

  •  ပြီးနောက် script file တစ်ခု ဆောက်ပြီး ထိုထဲ တွင် sshpass ဖြင့် ရေးမည် ဖြစ်ပါသည်။ .sh ဖြင့် extension ထားရမည်။ ပြီး လျှင် chmod command ဖြင့် executable ဖြစ် ထားရမည်။ ပြီးလျှင်တော့ script file run လိုက်လျှင် တစ်ဖက် စက်ကို auto login ဝင်သွားမည် ဖြစ်သည်။ 




Using expect program
                   
                     Expect script ကတော့ အသုံးပြု သူ user နှင့် system အပြန်အလှန် interact လုပ်ပြီး လုပ်ငန်း ဆောင်ရွက်တဲ့ ပုံစံ ဖြစ်ပါတယ်။ ပြောချင် သည် က ကိုယ်က command တစ်ခု ရိုက်တယ် ထို command ရဲ့ response ကို စောင့်တယ် ကိုယ် request လုပ်ထားတဲ့ response ရောက်လာပြီ ဆိုရင် နောက် တစ်ခု ဆက်သွားမယ် အဲ့လို ပုံစံမျို း နဲ့ အလုပ် လုပ်ပါတယ်။ နောက်တစ်ခု က ကိုယ်က Server တွေဆီ ကို ssh နဲ့ login ဝင်ရတယ်ဆိုပေမယ့် ဥပမာ log file ကြည့်တာလောက်ပဲ ခန စစ်ဆေးချင်တယ်ဆိုလျှင် အခု expect script ရေးကတည်းက ကိုယ်အသုံးပြု ချင်တဲ့ command တစ်ချို့ကို ရိုက်ထည့်ထားလို့ရပါတယ်။

  •     အရင်ဆုံး expect program ကို install လုပ်မယ် #yum install expect ဆိုပြီးတော့ပါ။




  • နောက် ကျွန်တော်တို့ expect script စရေးမှာ ဖြစ်ပါတယ်။ ပုံမှန် အတိုင်း .sh extension , executable ဖြစ်အောင် လုပ်မယ်။ script ပုံနှင့် အတူ အထဲမှာ သဘောတရား ကို ပါ ရေးပေးထားပါတယ်။ script ထဲ မှာ ထည့်ထားတဲ့ command "free -m" သည် စက်ရဲ့ Memory Size နှင့် Swap Size ကို ပြပေးတာ ဖြစ်ပါတယ်။








  • အခု အပေါ်မှာ လုပ်ပြသွားတာသည် tutorial အစမှာ ထဲက ကျျွ န်တော်တို machine တွေသည် public key တွေ generate လုပ်ပြီး စလာခဲ့သောကြောင့် expect script ထဲမှာ ဘာမှ လိုင်းကြောင်းသိပ်မရှိပဲ တစ်ဖက်သို့ တိုက်ရိုက်ဝင်သွားတာပါ။ အခု လိုမျို း public key တွေ exchange မလုပ်ရသေးဘဲ ချိတ်လျှင် ဒီထပ် စာကြောင်းနည်းနည်းထပ် ရှည် မည် ဖြစ်သည်။ ပုံတွင် တစ်ဖက် machine ကို direct root access ဖြင့် မဝင်ပဲ limit user account ဖြင့်ဝင်ထားပြီး expect command များဖြင့် root သို့ရောက်အောင်လုပ် executable command ထုတ်ပြီး နဂို စက်သို့ exit ပြန်လုပ်တဲ့ပုံစံ ပြထားပါသည်။





  
Secure Copy (SCP)
                     Secure Copy (SCP) သည် ssh နှင့် file transfer ပြုလုပ်တဲ့အခါ သုံးပါတယ်။SSH Session ဖြစ်နေစဉ်မှာ Securely encrypted ပုံစံဖြင့်အလုပ်လုပ်ပါတယ်။


Copy the file from a remote host to the localhost
#scp root@192.168.10.11:/opt/file.txt /opt/ ( from remote to local /opt/ )

Copy the file from localhost to remote host
#scp /opt/file.txt root@192.168.10.11:/opt/ (from local /opt/file.txt to remote /opt/)

Copy the folder from the local host to remote host
#scp -r /opt/folder root@192.168.10.11:/opt/ (from local /opt/folder to remote /opt)















Share:

0 comments:

Post a Comment