เข้าใช้งาน Virtualbox ผ่าน SSH โดยการใช้ Public Key

หาอะไรทำเล่นตามประสาคนว่าง ฮ่าๆๆ วันนี้ก็เลยหาวิธีใช้ ssh เข้าไปที่ Virtualbox (CentOS) ด้วย Public key ซึ่งข้อดีก็คือ ไม่ต้องพิมพ์พาสเวิร์ดอยู่เรื่อยๆ จริงๆ แล้วอยากจะลองติดตั้ง git server ไว้ที่ Vitualbox เพื่อจะลองใช้ Jenkins CI ดูครับ แต่ก่อนอื่น ก็ทำให้ล็อกอินด้วย public key ก่อนก็แล้วกันครับ

ก่อนอื่นก็ล็อกอินแบบธรรมดาๆ โดยกรอก user/password เข้าไปก่อน เพื่อไปเพิ่ม  user ในเครื่อง VirtualBox (ขอเรียก vm ก็แล้วกันครับง่ายดี บ่องบอกถึงความขี้เกียจ ฮ่าๆๆ) user ที่ผมสร้างก็เอาเป็น git ก็แล้วกันครับ จะได้เอาไปใช้ต่อเลย

# useradd git
# passwd git

จากนั้นก็สร้างโฟล์เดอร์ .ssh และไฟล์ authorized_keys ไว้ที่ home ของ user git ครับ

# mkdir /home/git/.ssh && touch /home/git/.ssh/authorized_keys

เปลี่ยนสิทธิ์ของโฟล์เดอร์ .ssh ให้ owner ดูและแก้ไขได้คนเดียวครับ (read & write)

# chmod 700 /home/git/.ssh
# chmod 600 /home/git/.ssh/*

จากนั้นก็เข้าไปแก้ไขไฟล์ sshd_config เพื่อเปลี่ยนให้ล็อกอินด้วย publickey

# vi /etc/ssh/sshd_config

แล้วก็แก้ไขค่า RSAAuthentication และ PubkeyAuthentication ให้เป็น yes ครับ

RSAAuthentication yes
PubkeyAuthentication

ทำการ restart sshd

# service sshd restart

ในส่วนของ vm ก็เรียบร้อยแล้วต่อไปก็เป็นเครื่องหลักของเราก็ต้องมีการสร้าง key pairs ด้วยคำสั่ง ssh-keygen ครับ

$ ssh-keygen -C "git@virtualbox-ipaddress"
Enter file in which to save the key (/xxx/.ssh/id_rsa): git_vm_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

จากนั้นก็ copy เนื้อหา (content) ของไฟล์ git_vm_rsa.pub (public key) ไปไว้ในไฟล์ authorized_keys ของ vm ที่เราสร้างไว้ครับ

$ cat git_vm_rsa.pub | ssh git@virtualbox-ipaddress "cat >> /home/git/.ssh/authorized_keys

ลอง ssh git@virtualbox-ipaddress ดูก็จะไม่มีการถามถึงพาสเวิร์สให้ต้องกรอกอีกต่อไป ^^

จบพิธีครับ 😀