
SSH คืออะไร?
SSH หรือเรียกว่า Secure Shell เป็น network protocol ที่เอาไว้ให้เราเชื่อมต่อระหว่าง Server กับ Server โดยที่ไม่ต้องใช้ Username หรือ Password แต่ใช้สิ่งที่เรียกว่า Public Key และ Private Key เพื่อยืนยันตัวตนแทน
ข้อดีคือ หากเราต้องการเข้าถึง Machine A กับ B โดยที่ทั้งสองเครื่องอยู่ไกลกันมาก เราก็แค่ใช้ SSH เข้าผ่าน Internet ได้เลย อารมณ์คล้ายๆ Remote Desktop เข้าไปคุมเครื่องนั่นเอง
หลักการทำงานของ SSH
เวลารับส่งข้อมูลระหว่างเครื่อง มันจะมีสิ่งที่เรียกว่า Hashing และ Encryption คือการเข้ารหัส ลองอ่านเพิ่มเติม หรือค้นหา keyword Cryptography ได้ครับ เกี่ยวกับ Hashing และ Decrypt / Encrypt มันจะมีรายละเอียดอีกเยอะมากๆ ทั้ง Algorithm, Signature, HMAC ไรพวกนี้
หลักๆเลย คือ SSH เวลาคุยกัน จะใช้ 2 อย่างคือ
- Public Key – เป็นสิ่งที่เราไว้ใช้บอกใครๆ หรือเอาให้ Server อื่นๆ ที่เค้าอยากมาติดต่อกับเรา (มองว่าเป็น Id ของเรา หรือ username ก็ได้ แต่ว่ามันยาวนะ)
- Private Key – ห้ามให้คนอื่นรู้เด็ดขาด เปรียบเสมือน Password ของเราเลยก็ว่าได้
สร้าง SSH Key (Github)
- เปิด Terminal / Git Bash ขึ้นมาเลยย
- ขั้นตอนนี้จะทำการสร้าง public/private ed25519 key pair ขึ้นมา
ssh-keygen -t ed25519 -C "
<ส่วนนี้สามาถตั้งชื่ออะไรก็ได้ตามที่ต้องการ>"
- ขั้นต่อมา มันจะถามว่า ให้สร้างไฟล์ไว้ที่ไหน (ถ้ามีแล้ว มันจะ override นะ) default คือ
~/.ssh/id_ed25519
อยากเปลี่ยนชื่อ ก็พิมพ์ชื่อไปได้- > Enter a file in which to save the key (/c/Users/YOU/.ssh/id_ALGORITHM):[Press enter]
- ขั้นตอนต่อมาก็ใส่ Passphrase (หรือก็คือ Password นั่นแหละ) เป็น Security Layer อีกขั้น นอกจาก Private / Public key pair แล้ว ก็ต้องใส่ passphrase ยืนยันอีกทีนึง
- > Enter passphrase (empty for no passphrase): [Type a passphrase]
- > Enter same passphrase again: [Type passphrase again]
Adding SSH Key to ssh-agent
เพิ่ม SSH Key ไป ssh-agent เอาไว้จัดการ key
eval "$(ssh-agent -s)"
# Mac OS ใช้บรรทัดนี้
ssh-add -K ~/.ssh/id_ed25519
# Linux ใช้นี้
ssh-add ~/.ssh/id_ed25519
ต่อไปถ้าเราจะ add SSH Keys ไปที่ Github หรือ providers อื่นๆ เราต้อง copy public key ของเราไปให้ทาง Github ตามด้านล่างนี้
cat ~/.ssh/id_ed25519.pub
Adding SSH Key to Github
https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-accounthttp://Add ssh key to github
- เปิด Github profile ของเราโดย คลิกที่รูปภาพทางขวาบน จากนั้นกดที่ setting

- กดไปที่ SSH and GPG keys

- กดไปที่ New SSH key ใส่ Title ให้เหมาะสม และ เอา pub key ที่เรา copy มาจากเครื่องเรา วางไปที่ช่อง Key และกด Add SSH key

ใน Part ต่อไปเราจะมาพูดถึงการ setting config ของ SSH และการ clone git ด้วย SSH ถ้าเรามี 2 account git กัน
>> https://blog.jumpbox.academy/how-to-clone-git-with-ssh-part-2/ <<