เข้าถึงเครื่อง vm ผ่านทาง Host CLI ได้ ไม่ต้องเล่นผ่านตัว GUI (virtual box)

Jaturong Duangchaiyusuk

บทความนี้ไม่มีอะไรเลยครับ แค่อยากจะบันทึกไว้กันลืม สืบเนื่องจากว่าลองลง ubuntu server เป็น vm ดูด้วย virtual box

ปกติก็เข้าไปใช้ผ่านทาง GUI ของตัว virtual box เอง ขั้นแรก ก็ต้องเลือก OS และปรับขนาด จำนวนของ cpu, memory, disk ไป ก็จะได้เครื่องที่เราสร้างมา

หน้าตา virtual box gui หน้าแรก

ทีนี่พอเราเปิดตัว vm ที่เราสร้างมา ก็จะได้ window ใหม่แยกออกมา จะเจอหน้าตาของ OS ภายในประมานนี้ จากรูปจะเป็นตัว ubuntu server ครับ

ubuntu server screen

พอมันเป็นหน้าต่างแยกมาของ virtual box สัดส่วนของของหน้าก็จะดูแปลก ๆ บ้าง หน้าตาไม่คุ้นแต่ก็ทนใช้ไปได้ แต่ปัญหาคือเวลาเราเจอ command ยาว ๆ ที่เราก๊อปมาจาก browser เครื่อง host เรา จะมา paste ที่หน้าต่างนี้มันวางไม่ติดครับ!! จะให้ถึกพิมพ์ยาว ๆ ก็ไม่น่าดี ก็เลยหาวิธีที่จะเข้าถึง vm ที่เครื่องผ่านทาง host cli ดูเผื่อชีวิตจะดีขึ้น หลักการก็คือเรา ssh เข้าไปแหละครับ แต่จะ ssh ได้ก็ต้องรู้ ip ของตัว vm เราก่อน

ไปที่ virtual box คลิ๊กขวาเครื่องที่เราต้องการ เลือก settings > networks > ปุ่ม port forwarding

จากนั้นมาเพิ่ม

  • name เป็นค่าที่ต้องการ จากตัวอย่างผมใส่เป็น “ssh”
  • protocol เป็น TCP
  • host port เป็นค่าที่ต้องการ จากตัวอย่างผมใส่เป็น “2224”
  • guest port เป็น 22

ตรงอื่นผมเว้นไว้ครับ

จากนั้นเปิด terminal มาและใส่คำสั่ง ssh -p <port> <username>@localhost

$ ssh -p 2224 ubuntu@localhost

เรียบร้อยครับ เข้าถึง vm ผ่านทางเครื่องหลักผม ที่เป็น mac เรียบร้อย ผมสามารถ copy & paste คำสั่งยาว ๆ จาก google ได้ละครับ แถมยังเป็น terminal ui ที่คุ้นเคยอีกด้วย

นอกจากนี้เรายังสามารถ ssh ได้ด้วยค่า ip address ได้ด้วย อันนี้มีประโยชน์มาก เพราะอย่างของผม ผมสร้าง vm มา 3 เครื่องเป็น cluster เลย และทุกเครื่องต้องมองเห็นกันหมด และคุยกันผ่าน ip address (ถ้าไม่จำเป็นต้องต่อด้วย ip ก็ผ่านส่วนนี้ไปได้เลยครับ)

ไปที่ virtual box คลิ๊กขวาเครื่องที่เราต้องการ เลือก settings > networks > เปลี่ยน attached to จาก NAT เป็น Bridged Adapter

ไปที่ terminal ในเครื่อง vm เรา ใช้คำสั่ง เพื่อดูค่า ip address

$ ip a

พอได้ค่า ip ของ vm ก็มาที่ ternimal ที่เครื่องหลัก แล้วพิมพ์คำสั่ง ssh <username>@<ip_address>

ssh ubuntu@192.168.2.57

ถ้าไม่ติดอะไรจะสามารถ ssh เข้าใน vm เครื่อง ip นั้นได้ และเราสามารถที่จะติดต่อกับ vm เครื่องอื่น ๆ ผ่านทาง ip ได้อีกได้ด้วยครับ

เพิ่มเติมบางทีอาจจะไม่ได้ ติดเรื่อง remote host ลองใช้คำสั่งนี้ก่อน ssh ดูครับ

ssh-keygen -R <ip_address>

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Jaturong Duangchaiyusuk
Jaturong Duangchaiyusuk

Written by Jaturong Duangchaiyusuk

Frontend ที่แวะมา Backend บ้าง DevOps บ้าง

No responses yet

Write a response

More from Jaturong Duangchaiyusuk