Tutorial

ฮาวทู Sync SSH Key ด้วย Bitwarden

By Arnon Puitrakul - 17 เมษายน 2025

ฮาวทู Sync SSH Key ด้วย Bitwarden

ปัจจุบันการ Authenticate เข้าใช้ SSH ด้วย SSH Key น่าจะเป็นวิธีที่ปลอดภัยมาก ๆ เมื่อเทียบกับการใช้งาน User/Password แต่ปัญหาใหญ่ ๆ คือ หากเรามีเครื่องคอมพิวเตอร์หลายเครื่อง สิ่งที่เราต้องทำคือ เราจำเป็นต้อง Copy Key ไปมา ซึ่งมันเสียเวลาเป็นอย่างมาก วันนี้ เราจะมาแนะนำวิธีการ Sync SSH Key ด้วย Password Manager อย่าง Bitwarden กัน

การสร้าง SSH Key บน Bitwarden

ฮาวทู Sync SSH Key ด้วย Bitwarden

ก่อนอื่นเลย เราจะต้องมี Key ใน Bitwarden กันก่อน โดยเราสามารถ Import Key ที่มีอยู่แล้วเข้าไป หรือ เราสามารถ Generate Key ใหม่ได้ใน Bitwarden ได้เลย วิธีการคือ ให้เราเข้าไปใน Bitwarden ที่เป็น Desktop App ที่ด้านข้างตรง Type ให้เราเลือก SSH Key

จากนั้นให้เรากดที่เครื่องหมายบวกด้านล่าง มันจะ Generate Key มาให้เราทันทีเลย เราทำหน้าที่เพียงแค่ใส่พวก ชื่อเข้าไป เช่น เป็น Key ที่เราใช้งานกับ Production VM เราก็สามารถตั้งชื่อ เพื่อเวลาใช้งานแล้วมันสื่อความหมายได้ง่ายขึ้นนั่นเอง

หรือ ถ้าเรามี Key อยู่แล้ว ให้เรา Copy Private Key เอาไว้ใน Clipboard กลับมาที่ Bitwarden ภายในช่อง Private Key มันจะมีปุ่มด้านขวาสุดที่เป็นรูป Clipboard กับกระดาษ ให้เรากด มันจะทำการวาง Private Key ที่อยู่ใน Clipboard ลงไป และ Generate Public Key ออกมาให้เราเอง จากนั้น เรากด Save เป็นอันบันทึก SSH Key เข้าไปใน Bitwarden ของเรา แล้วเดี๋ยวมันจะทำการ Sync ระหว่างอุปกรณ์ให้เราเองเมื่อเราเชื่อมต่ออินเตอร์เน็ต

เปิดใช้งาน SSH Key Agent

ลักษณะการทำงานของการ Authenticate โดยใช้ SSH Key ของ Bitwarden จะแตกต่างจากการเอา Key File ไปวางแล้วเรียก Path เฉย ๆ เพราะถ้าทำแบบนั้น เราจะไม่สามารถปกป้อง SSH Key ที่ Sync เข้ามาผ่าน Bitwarden ได้ วิธีการที่เขาใช้ คือ จะทำ Socket ตัวนึงเข้ามา เป็นตัวกลางในการ Challenge เรา หากทำงานผ่าน มันก็จะคืนกลับไปเป็น SSH Key ที่อยู่ใน Bitwarden ออกมา เพื่อให้ Authenticate เข้าใช้งาน SSH ของเราได้นั่นเอง

ทำให้ ขั้นตอนแรกเราจะต้องเข้าไปเปิดการใช้งาน SSH Key Agent ของ Bitwarden ก่อน ด้วยการเข้าไปที่ Settings เลื่อนลงไปด้านล่าง จะมีตัวเลือกที่เขียนว่า Enabe SSH Agent ให้เราติ๊กถูก แล้วกด Close ได้เลย

macOS : /Users/<user>/Library/Containers/com.bitwarden.desktop/Data/.bitwarden-ssh-agent.sock

Linux : /home/<user>/.bitwarden-ssh-agent.sock

เมื่อเราเปิดใช้งานแล้ว เราจะต้องเช็คว่า SSH Agent ของเราได้เริ่มทำงานแล้ว โดยมันจะสร้าง Socket ขึ้นมาให้เราทำงานผ่านไฟล์ โดยใน Linux และ macOS จะอยู่คนละ Path กัน ให้เราเข้าไปเช็คว่า มันมี Socket File ตามที่อยู่ด้านบนหรือไม่ หากมีไฟล์อยู่ ก็คือ เราเปิดใช้งาน SSH Agent ของ Bitwarden เรียบร้อย

ให้ OpenSSH เรียก Bitwarden SSH Key Agent

export SSH_AUTH_SOCK=/Users/<user>/Library/Containers/com.bitwarden.desktop/Data/.bitwarden-ssh-agent.sock

เราจะต้องมา Config ในฝั่งของ OpenSSH ให้มันเข้ามาเรียก Bitwarden SSH Key Agent ที่เราเปิดใช้งานในขั้นตอนก่อนหน้า โดยการตั้ง Environment Variable ที่ชื่อว่า SSH_AUTH_SOCK ให้เป็น Path ของ Socket File โดยใช้ Comment ด้านบนนี้

vim ~/.zprofile

แต่ถ้าเราทำแค่นั้น เมื่อเราเรียก Terminal Session ใหม่ เาก็ต้องเข้าไปรันคำสั่งด้านบนนี้ เพื่อตั้งค่า Environment Variable ตลอด แต่เราสามารถให้มันเซ็ตค่านี้ได้ทุกครั้งที่สร้าง Session ใหม่ขึ้นมาได้โดยการเข้าไปใน Config File ของ Shell เรา เช่นใน macOS ตัว Default Shell จะเป็น zsh เราสามารถเข้าไปตั้งค่าเพิ่มภายใน Config File ด้านบนได้เลย

> ssh-add -L
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOdj+EZgdnjwYh8BpEpc6dD8+bNzzI8jJ6mqErB8DNlb Test SSH Key

เราสามารถทดสอบเรียก Key ออกมาเช็คได้ จากคำสั่งด้านบน หากเราได้ Key ตัวที่เราเพิ่มเอาไว้ใน Bitwarden นั่นแปลว่า เราทำสำเร็จแล้ว

ทดสอบเรียกใช้ SSH Key

เพื่อทำการทดสอบให้เห็นว่า มันสามารถทำงานได้จริง ๆ เราจะใช้การ Authenticate เข้าไปที่ Github กันดีกว่า ก่อนอื่นเลย ให้เราเข้าไปเพิ่ม SSH Key ที่เรา Generate หรือ Import เข้ามาใน Bitwarden ลงไปใน Github Account ของเราก่อน

ssh [email protected]

เราจะทดลอง SSH เข้าไปที่ Github เสมือนว่า เราพยายามที่จะ Clone Repository กัน โดยใช้คำสั่งด้านบน

ฮาวทู Sync SSH Key ด้วย Bitwarden

เมื่อเรารันไปแล้ว มันจะไปเรียก Socket File นั้นขึ้นมา เราจะเห็นว่า Bitwarden มันจะเด้งหน้าต่างมาถามว่า เราจะใช้งาน SSH Key ที่อยู่ภายใน Vault ของเราจริง ๆ หรือไม่ เราก็แค่กด Authorise ก็เรียบร้อยแล้ว

สรุป

SSH Key Agent ใน Bitwarden เป็นอีก Feature ที่ดีมาก ๆ มันทำให้เราที่มีเครื่องคอมพิวเตอร์หลาย ๆ เครื่องไม่จำเป็นต้องนั่ง Copy Key File ไป ๆ มา ๆ ลดความเสี่ยงในการที่เราจะก๊อปไปแล้วลืมไว้ที่ไหนอีก เหมือนเราอาจจะวางกุญแจลืมเอาไว้นอกบ้านยังไงอย่างงั้นเลย หากใครมีการ SSH เข้าใช้งานระบบต่าง ๆ และใช้งาน Bitwarden อยู่ก็แนะนำเลย มันดีจริง ๆ เหมือนเราเปลี่ยนจากกลอนประตูที่ใช้กุญแจ เป็น Digital Door Lock เลย แค่เปลี่ยนเป็นในโลกของ Authentication เท่านั้นเอง