SSH login with key

ပုံမှန် SSH ကို login ဝင်ရင် ကျွန်တော်တို့တွေ password ကို အသုံးပြုကြပါတယ်။ Password ကို အသုံးမပြုပဲ လက်ရှိ device ဆိုရင် အလိုအလျောက် login ဝင်လို့ရအောင် ဖန်တီးနိုင်ပါတယ်။ ကျွန်တော်တို့တွေ အနေနဲ့ ပထမဆုံး ssh key တစ်ခု ဖန်တီး ဖို့ လိုပါတယ်။

ssh-keygen

ဆိုပြီး terminal မှာ ရိုက်လိုက်ပါ။ Mac နှင့် Linux အတွက် အဆင်ပြေပေမယ့် Windows မှာဆိုရင်တော့ putty အသုံးပြုရလိမ့်မယ်။

အဲဒီ အခါမှာ ~/.ssh/ ထဲမှာ id_rsa.pub နဲ့ id_rsa file ၂ ခု တွေ့ရပါလိမ့်မယ်။ id_rsa.pub ကတော့ public file ဖြစ်ပြီးတော့ id_rsa ကတော့ private file ဖြစ်ပါတယ်။

id_rsa.pub file ကို text editor ဖြင့် ဖွင့်ပါ။ text ကို copy ကူးပါ။ Mac ဆိုရင်တော့

cat ~/.ssh/id_rsa.pub | pbcopy

အဲဒါဆိုလျှင် တစ်ခါတည်း copy ကူးပြီးသား ဖြစ်သွားပါလိမ့်မယ်။

လက်ရှိ ဝင်နေကြ ssh ကို login ဝင်ပါ။ ပြီးလျှင်

cd ~/.ssh/
vi authorized_keys

ကျွန်တော်တို့ copy ကူးထားသည့် key ကို paste လုပ်လိုက်ပါ။ ပြီးလျှင် တစ်ကြောင်း ဆင်းပါ။ vim မသုံးတတ်ရင် nano သုံးလည်း ဖြစ်ပါတယ်။

တစ်ခါတစ်လေ AWS လိုမျိုး server တွေမှာ authorized_keys ထည့်ပေမယ့် အလုပ်မလုပ်တာ ရှိတတ်တယ်။ sshd config ကို ပြင်ဖို့ လိုပါတယ်။ ကျွန်တော်တို့ SSH server က sshd config ကို ပြင်ဖို့ အတွက်

vi /etc/ssh/sshd_config

ပြီးလျှင် အောက်ပါ စာတွေက comment disable လုပ်ထားလား စစ်ပါ။ မလုပ်ထားရင် လုပ်လိုက်ပါ။

# root access ဖြင့် login ဝင်လို့ ရရန်
PermitRootLogin yes

# Password ဖြင့် Login ဝင်လို့ ရရန် , no ဆိုလျှင် key ဖြင့်သာ ဝင်နိုင်မည်။
PasswordAuthentication yes

ပြီးလျှင်

service ssh restart

ပြုလုပ်ပေးရန် လိုအပ်သည်။

ပြီးလျှင်

ssh [email protected][ServerIP]

ဆိုလျှှင် တိုက်ရိုက် ဝင်လို့ ရသည် ကို တွေ့ရပါမည်။ အကယ်၍ ဝင်လို့ မရပဲ password တောင်းနေလျှင် /etc/ssh/sshd_config မှာ

AuthorizedKeysFile     .ssh/authorized_keys

ဆိုတာ ထပ်ဖြည့်ပေးရန် လိုအပ်သည်။ ပြီးလျှင်

service ssh restart

ပြန်လုပ်ပေးပါ။

ပြီးနောက် နောက်တစ်ခါ login ပြန်ဝင်ကြည့်ပါ။

အကယ်၍ key တစ်ခုတည်းကို team အနေနဲ့ သုံးမယ် ဆိုရင် .ssh/id_rsa file ကို ပေးနိုင်ပါတယ်။ ssh ဖြင့် login ဝင်သည့် အခါမှာတော့ အောက်ပါ အတိုင်း ဝင်နိုင်ပါတယ်။

ssh -i mykeyfile [email protected][ServerIP]

အကောင်းဆုံးကတော့ server access ရှိမည့် သူများရဲ့ စက်ရဲ့ public key ကိုတောင်း ပြီး server ရဲ့ authorized_keys ထဲမှာ ထည့်ထားပါ။ ပြီးရင်

PasswordAuthentication no

ပေးထားခဲ့ရင် key မရှိပဲ ဝင်ဖို့ ခက်ခဲသွားပါလိမ့်မယ်။


By saturngod

Mobile and Web Developer

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.