หาอะไรทำเล่นตามประสาคนว่าง ฮ่าๆๆ วันนี้ก็เลยหาวิธีใช้ 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 ดูก็จะไม่มีการถามถึงพาสเวิร์สให้ต้องกรอกอีกต่อไป ^^
ssh git@virtualbox-ipaddress Last login: Mon Feb 17 22:43:53 2014 from xxx.xxx.xxx.xxx [git@localhost ~]$
จบพิธีครับ 😀