Git clone บน SSH ทำยังไง ดีกว่า HTTPS ไหม ?

        Programmer หลายคนที่ใช้ Git เป็น version control คงจะคุ้นเคยกับการ clone source code จาก repository ไม่ว่าจะเป็น GitHub หรือ Gitlab หรือเจ้าอื่นๆ ก็มีวิธีเดียวกันคือ ใช้ URL ประมาณนี้ https://github.com/lordgift/test-project.git


 % git clone https://github.com/lordgift/test-project.git


        การ clone แบบนี้คือ ช่องทาง HTTPS ซึ่งไม่ว่าจะใช้ cli หรือ tool อื่น ก็จะต้องการให้เรา authentication ก่อนในครั้งแรกเสมอ เช่น การกรอก username, password หรือการใช้ single sign-on จากผู้ให้บริการต่างๆ


👇🏻👇🏻👇🏻👇🏻👇🏻


        เมื่อยุคสมัยเปลี่ยนไปเรื่องความปลอดภัย (Security) ก็มีความสำคัญมากขึ้น การใช้งานเพียง username, password ดูมีความเสี่ยงมากขึ้น คอนเซป 2 factors authentication (2FA) ก็เข้ามา ทำให้การแค่ clone ก็ดูยุ่งยากเพิ่มขึ้นมาอีก 



        การ clone ผ่าน SSH 

        คือท่าที่ผู้ให้บริการ git repository ต่างๆ เพิ่มความสะดวกให้เหล่า Programmer มากยิ่งขึ้น เพียงแต่ขั้นตอนของ "ครั้งแรก" ของ SSH ก็ดุยุ่งยากหน่อยๆ แต่ก็ทำเพียงครั้งเดียว


GitHub : clone via SSH


        ใครที่หลงมาทำโดยยังไม่ได้ทำตามสูตร ก็จะเป็นแบบนี้

 % git clone [email protected]:q-chang/buddy-ios.git
 Cloning into 'test-project'...
 [email protected]: Permission denied (publickey).
 fatal: Could not read from remote repository.
 Please make sure you have the correct access rights and the repository exists.


        การจะ clone ผ่าน SSH จำเป็นจะต้องสร้าง Private key 🔑, Public key 🗝 ซะก่อน ถ้าใช้ git tool ก็มักจะมีหน้าจอให้ทำได้ง่ายๆ เลย 


Generate & Add SSH Private Key 🔑 ท่าที่ 1 (GitKraken)

1. สร้าง Key 🔑🗝โดยกด Generate สีเขียว

2. Copy SSH Public Key 🗝 เก็บไว้ก่อน

GitKraken : Preferences -> SSH

3. เพิ่ม SSH Private Key 



Generate & Add SSH Private Key 🔑 ท่าที่ 2 (CLI)

1. สร้าง Key 🔑🗝 โดย CLI

 % ssh-keygen -t ed25519 -C "[email protected]"
 Enter file in which to save the key (/Users/mac/.ssh/id_ed25519): id_ed25519_new
 Enter passphrase (empty for no passphrase):
 Enter same passphrase again:


2. Copy SSH Public Key 🗝 เก็บไว้ก่อน 
 % pbcopy < ~/.ssh/id_ed25519_new.pub

3. เพิ่ม SSH Private Key 🔑 ไปที่ local machine
 % ssh-add --apple-use-keychain ./id_ed25519_new




Github : Add SSH Public Key 🗝

4. กด New SSH key

  • ตั้งชื่อตามความเหมาะสม
  • paste SSH Public Key 🗝 ที่เก็บไว้

GitHub : Settings -> SSH and GPG keys -> New SSH key

GitHub : Settings -> SSH and GPG keys

5. เท่านี้เราก็สามารถ clone ด้วย SSH URL ได้แล้ว


GitKraken : Clone


        ท่า CLI ก็ทำได้

 % git clone [email protected]:lordgift/test-project.git



-------------------------


        จบกับ "ครั้งแรก" เรียบร้อยครับ ซึ่งท่านี้จะไม่มีการหมดอายุตราบที่เราไม่ key ฝั่งใดฝั่งหนึ่งไม่หายไป จำไว้ว่าต้องมี Private key 🔑, Public key 🗝 คู่กันเสมอ ถ้าเราเปลี่ยนเครื่อง หรือเปลี่ยนอีเมลล์ หรือย้ายจาก GitHub ไปยัง GitLab ก็ต้องทำกระบวนการนี้ใหม่ครับ หรือถ้าใช้หลาย key (gen ตาม tool) ก็อาจะทำให้เราสับสนว่าใช้ตัวไหนอยู่ก็ได้ ถ้าจะให้ดี เราสามารถติ๊ก Use local SSH agent เพื่อใช้ key ตาม system หรือหากสบายใจจะ gen ใหม่เสมอ ก็ไม่ได้มีปัญหาอะไรในการใช้งานครับ


GitKraken : Preferences -> SSH



        กลับมาพูดถึงท่า HTTPS กันอีกหน่อย จริงๆ แล้วท่าที่ง่ายสำหรับการใช้ username, password ที่มี 2FA ก็คือ การ generate Personal Access Tokens เพื่อใช้แทน password ซึ่งมันก็อาจจะดูไม่ได้ยุ่งยาก เพิ่ม-ลบได้เหมือนกัน สุดท้ายก็คงจบที่ว่า แล้วแต่แต่ละท่านจะถนัดเลยครับผมมม




ref. Generating a new SSH key and adding it to the ssh-agent



Facebook Comment

Recent Posts

Popular post of 7 days

[Java] ความแตกต่างระหว่าง Overloading กับ Overriding

Portal คืออะไรกันนะ???

Port Forwarding สำหรับคนใช้ AIS Fibre

Popular

Portal คืออะไรกันนะ???

[Java] ความแตกต่างระหว่าง Overloading กับ Overriding

มาตรฐานการตั้งชื่อตัวแปร (Naming Convention)

เรื่องของ ++i กับ i++

Port Forwarding สำหรับคนใช้ AIS Fibre

วิธีการสมัคร Apple Developer Program และ Enterprise Program ฉบับลงมือเอง

ลืมรหัสปลดล็อค Android เข้าเครื่องไม่ได้ มีทางออกครับ

ทดสอบ Mobile App แบบ Automated ด้วย Appium ทำยังไงกันนะ

Deeplink, Universal Links คืออะไร ทำงานร่วมกับ Mobile App ได้ยังไง

Android Auto & Apple Carplay คืออะไร ใช้งานยังไง