# How to setup a password less SSH Connection between Windows and Linux

အားလုံးပဲ မင်္ဂလာပါ။ ကျွန်တော်အခုပြောပြမယ့် အကြောင်းအရာကတော့ ကျွန်တော်တို့ အသုံးပြုနေတယ့် windows ကနေ linux server ကို ssh နဲ့ login ဝင်တယ့် အကြောင်းကိုပြောပြပေးမှာဖြစ်ပါတယ်။ ဒီ lab မှာ linux ssh login ကို password less login နဲ့ အသုံးပြုမည့်အပြင် ssh login ကို 3rd party software တွေအသုံးပြုမပဲ ssh config file ရေးပြီး တော့ windows command prompt ကနေပဲ အသုံးပြုပြမှာပါ။ example အနေဖြင့်

```bash
ssh web01
```

ဆိုပြီးတော့ command prompt မှာ ရိုက်လိုက်တာနဲ့ linux server ထဲကို password မတောင်းပဲ တစ်ခါတည်း login ဝင်သွားအောင် setup လုပ်မှာဖြစ်ပါတယ်။ ဒီလိုအသုံးပြုခြင်းဖြင့် ကျွန်တော်တို့ server တွေထဲကို login ဝင်တဲ့ အခါမှာ ပိုမိုမြန်ဆန်ပြီးတော့ ကိုယ့် Server ရဲ့ ip address တွေကိုလဲ အပေါ်ယံအနေဖြင့် မသိနိုင်တော့ဘူးပေါ့။ ဆိုတော့ စလိုက်ကြရအောင်။

ကျွန်တော်တို့ linux server တွေထဲကို ပုံမှန်အတိုင်း login ဝင်တဲ့အခါမျိုးမှာ command prompt ကနေ

```bash
ssh redhat@192.168.109.136
```

ဆိုပြီးတော့ username ရယ် server ip ရယ်ရိုက်ထည့်လိုက်တာနဲ့ password ရိုက်ထည့်ခိုင်းမှာဖြစ်ပြီး password မှန်ရင်တော့ server ထဲကို login ဝင်သွားမည်ပဲဖြစ်ပါတယ်။ ဒီလိုအသုံးပြုခြင်းက server တစ်လုံးနှစ်လုံးဆို အဆင်ပြေပေမယ့် များစွာသော server တွေကို login ဝင်ရမယ့်အချိန်မှာ အဲ့လိုမျိုး အများကြီးထိုင်ရိုက်နေရတော့မယ်ဆိုရင် အဆင်ပြေမှာမဟုတ်တော့ပါဘူး။ အဲ့လိုမျိုးအခြေအနေမျိုးမှာ MobaXterm လိုမျိုး 3rd party software တွေ သုံးပြီး မိမိဝင်ချင်တယ့် server တွေကို တစ်ခါတည်း add ထားလို့ရပါတယ်။ ကျွန်တော်ကတော့ 3rd party software မသုံးပဲ Windows ရဲ့ command prompt ပဲအသုံးပြုပြီး setup လုပ်သွားမှာဖြစ်ပါတယ်။

First Step - ပထမဆုံးအနေနဲ့ ဘာအရင်လုပ်ရမလဲ ဆိုတော့ ကျွန်တော်တို့ အသုံးပြုနေတယ့် Windows မှာ ssh key ကို အရင်ဆုံး generate ထုတ်ရပါတယ်။ ဆိုတော့ command prompt ကိုဖွင့်ပြီး ssh-keygen ကိုပြီး ရိုက်ပါမယ်။

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725455227680/4c85d569-519f-427d-bd36-2b5843d8ef0d.png align="center")

ssh-keygen ရိုက်လိုက်တာနဲ့ generate ကိုထုတ်မယ့် file လမ်းကြောင်းလာပြပေးမှာဖြစ်ပြီးတော့ default အတိုင်းမလိုချင်ရင်တော့ ကိုယ်ဘာကို custom ပြန်ရေးပြီး ထုတ်လို့ရပါတယ်။ ကျွန်တော်ကတော့ ဒီမှာ လက်ရှိ directory အောက်မှာပဲ lab\_key ဆိုပြီးတော့ထုတ်လိုက်ပါတယ်။

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725460378716/19e9bd06-ea07-4c36-a6e4-6af4f68f5b20.png align="center")

ထုတ်ပြီးသွားပီဆိုတော့ လက်ရှိ directory အောက်မှာ lab\_key နဲ့ lab\_key.pub ဆိုပြီး file လေးနှစ်ခု ရနေပါပီ။ အဲ့ဒီ file လေး နှစ်ဖိုင်ထဲကမှ ကျွန်တော်တို့ login ဝင်ချင်တဲ့ linux server ထဲကို public key file လေးကို copy ကူးပါမယ်။ scp ဆိုသည့် command ကိုအသုံးပြုပြီး windows command prompt ကိုပဲအသုံးပြုသွားပါမယ်။

```bash
scp lab_key.pub redhat@192.168.109.136:/home/redhat/.ssh/authorized_keys
```

ဒီလိုရိုက်လိုက်တာနဲ့ password ရိုက်ခိုင်းမည်ဖြစ်ပြီး server ရဲ့ redhat user ရဲ့ password ရိုက်ပေးရမည်ဖြစ်ပါသည်။

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725461023172/190466a7-bf03-4025-a0a8-6428c616fc5b.png align="center")

ပုံပါအတိုင်း server ထဲကို lab\_key.pub ဆိုသည့် file ကို copy ကူးပြီးသွားပြီဖြစ်ပါသည်။ ဒါဆိုရင်တော့ server ထဲကို password မလိုပဲ login ဝင်လို့ရပြီဖြစ်ပါသည်။ အသုံးပြုသည့် command ကတော့

```bash
ssh -i lab_key redhat@192.168.109.136
```

ဒီလိုဆိုရင်တော့ server ထဲကို password မတောင်းပဲ login ဝင်သွားမှာပဲဖြစ်ပါတယ်။

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725461347685/825ef1c4-2272-4524-b5d7-9a9a706d0364.png align="left")

ကျွန်တော်တို့ထပ်ပြီး လုပ်ချင်တာက server ရဲ့ username နဲ့ ip address ကြီးကို မရိုက်ချင်တာဆိုတော့ နောက်ထပ် ထပ်ပြီးတော့ လုပ်ဆောင်ပေးရမှာရှိပါတယ်။

**C:\\Users\\user\_name\\.ssh\\** ထဲမှာ Config ဆိုပြီးတော့ file လေး တစ်ဖိုင်ကို သွားဆောက်ပါမယ်။ file ဆောက်ပြီးပြီဆိုရင်တော့ အဲ့ ဖိုင်လေးကို ဖွင့်ပြီးတော့ ssh config လေးတွေရေးပါမယ်။

```bash
Host web01
  HostName 192.168.109.136
  User redhat
```

အဲ့ဒီ file လေးထဲမှာ အခုလိုမျိုး ရေးလိုက်ပါမယ်။ Host ကတော့ ကျွန်တော်ကတော့ ssh နဲ့ login ဝင်ရင် ကိုယ်အသုံးပြုချင်သည့် name ကို ထည့်ပေးရမည်ဖြစ်ပြီး , HostName မှာတော့ Server IP , User မှာတော့ သူ့ username ထည့်ပေးရပါမယ်။ ဒါဆိုရင် ကျွန်တော်တို့အသုံးပြုချင်သည့် ပုံစံအတိုင်းရပီပဲ ဖြစ်ပါသည်။

```bash
ssh -i lab_key web01
```

ဒါဆိုရင် ပထမကလို အရှည်ကြီး ရိုက်စရာမလိုတော့ပဲ name လေးပဲရိုက်လိုက်တာနဲ့ server ထဲ login ဝင်သွားပီပဲဖြစ်ပါသည်။

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725461898262/29d59f0e-55ff-4482-a0c0-ce51e4193201.png align="center")

ssh အနောက်က -i ဆိုတဲ့ options ကိုသုံးနေရခြင်းကတော့ ကျွန်တော်တို့က ssh key generate file ကို သူရဲ့ default key name ကိုမသုံးထားလို့ ရိုက်နေရခြင်းပြဖြစ်ပါတယ်။ key-gen ထုတ်တဲ့နေရာမှာ default အတိုင်းပဲထားခဲ့မယ် ဆိုရင် -i options သုံးစရာမလိုပဲ ssh web01 ဆိုပြီးပဲ အသုံးပြုလို့ရမည်ပဲဖြစ်ပါသည်။
