ฉันจะตั้งค่าอย่างไรฉันจึงสามารถ SSH เป็น VMWare guest VM ของฉันได้อย่างไร


16

ด้วยเหตุผลบางอย่างเอกสารเกี่ยวกับกระบวนการนี้บนอินเทอร์เน็ตค่อนข้างขาดหรือล้าสมัย โดยทั่วไปฉันมีเครื่องเสมือนแขก VMWare ใน VMWare Fusion (ใช้งาน Ubuntu 10.10) และฉันมี Mac OSX 10.6 เป็นโฮสต์ ฉันต้องการ SSH จาก Mac ไปยัง Linux VM ฉันจะกำหนดค่าสิ่งต่าง ๆ ได้อย่างไร


ที่เกี่ยวข้อง: superuser.com/questions/729712/… อย่างน้อยใน Windows คุณสามารถตั้งค่า IP โดยอัตโนมัติโดย VMWare
Ben

คำตอบ:


13

อย่างแน่นอน - เป็นเพียงเรื่องของการใช้โลคอลอินเทอร์เฟซหรือบริดจ์อินเตอร์เฟซและทำงานจากที่อยู่ IP ของระบบที่รันเซิร์ฟเวอร์ ssh (โดยใช้คำสั่ง ifconfig) ติดตั้ง openssh-server บน VM ใช้ไคลเอ็นต์ ssh ของคุณและทำ

หากคุณใช้อินเตอร์เฟส NAT อาจมีความซับซ้อนและไม่แนะนำให้ใช้โดยทั่วไป


1
สำหรับคนที่ไม่ทราบอย่าลืมเริ่มต้นเซิร์ฟเวอร์ ssh โดยใช้service sshd startหรือถ้าคุณต้องการที่จะเริ่มมันในการบูตเครื่องchkconfig sshd on
Anthony Hatzopoulos

21

จริงๆแล้วมีเหตุผลที่ดีมากมายที่จะใช้ NAT กับ VMs ของคุณแทนที่จะเชื่อมต่ออินเตอร์เฟซ .. (นี่เป็นคำถามเก่า แต่มันเกิดขึ้นเมื่อผลลัพธ์แรกของฉันค้นหาวิธีการนี้คือการย้ายจาก VirtualBox ที่ฉันทำ มันตลอดเวลาดังนั้นฉันคิดว่ามันมีมูลค่าเพิ่ม)

เหตุผลสองสามข้อในการใช้ NAT คือ:

  • ง่ายและพกพาได้
  • หากคุณใช้ LAN ของลูกค้าที่ต้องการที่อยู่ MAC ที่รู้จักเพื่อรับ IP (ไม่เช่นนั้นคุณต้องลองเดาสิ่งที่ไม่ได้ใช้งานและเสี่ยงต่อความขัดแย้งและมักจะดึงความสนใจของคุณ :))
  • สิ่งต่าง ๆ เช่นการอนุญาตให้ VMs ของคุณใช้พร็อกซีเซิร์ฟเวอร์เดียวบนโฮสต์ของคุณ (IE หากคุณไม่ได้ควบคุมเครือข่ายที่คุณเปิดอยู่) หรือสามารถไฟร์วอลล์ / กรองทราฟฟิกออกอากาศ (windows ฯลฯ ) ได้ สถานที่ที่สะดวก
  • ความสามารถในการกำหนด IP คงที่หรือสำรองไว้เพื่อให้คุณสามารถอ้างอิงได้โดยใช้ชื่อ / IP จากนอกโฮสต์ (อีกครั้งหากคุณไม่สามารถรับการจองบนเครือข่ายด้วยอินเทอร์เฟซบริดจ์)
  • แต่ที่สำคัญที่สุดคือช่วยให้คุณสามารถซ่อนอยู่หลังการกำหนดค่าไฟร์วอลล์เดียวบนโฮสต์ของคุณและแบ่งปันสิ่งต่าง ๆ ระหว่างคุณ / พวกเขาในวิธีที่ได้รับการป้องกันมากกว่าการเปิดเผย VM ทุกตัวให้เป็น "เสริม" และต้องปกป้องพวกเขาทั้งหมด .. เหมือนกับที่คุณทำกับโมเด็มอินเทอร์เน็ต / เราเตอร์

อย่างไรก็ตามสำหรับกรณีของฉัน (VMWare Workstation 10, โฮสต์ Linux, OS X Guest) และทุกคนที่สะดุดกับเรื่องนี้นี่เป็นภาพรวมของสิ่งที่ได้ผลสำหรับฉัน นอกเหนือจาก waffling และ what-ifs มีเพียง 3 ขั้นตอนหลักเท่านั้น

  • ดังนั้นก่อนอื่นคุณต้องตัดสินใจเลือกสิ่งที่คุณต้องการอนุญาตให้ VM / แขกของคุณจาก "นอก" ของโฮสต์ของคุณ (หมายเหตุดังต่อไปนี้คุณจะสามารถเข้าถึงได้อย่างง่ายดายจากโฮสต์เอง) การเดิมพันที่ปลอดภัยจะเป็นการเปิดเผย / อนุญาตเฉพาะ SSH (พอร์ต 22) ไปยังเครื่องในเครือข่ายย่อยของคุณ คุณสามารถอนุญาตพอร์ต 80/443 หากคุณมีเว็บเซิร์ฟเวอร์บน VM และอื่น ๆ และคุณยังสามารถใช้ "อุโมงค์" เพื่อเข้าถึงบริการอื่น ๆ โดยใช้ SSH (จะยกตัวอย่างด้านล่าง) และใช้ FUSE / SSHFS เพื่อให้โฮสต์ของคุณ การเข้าถึงระบบไฟล์ .. (หรือสิ่งอำนวยความสะดวกโฟลเดอร์ที่แชร์ใน VMWare แต่ฉันยังไม่ได้ใช้)

ดังนั้นความคิดจึงเป็นเช่น: "อนุญาตสิ่งต่าง ๆ บนเครือข่ายท้องถิ่นของฉัน (เช่น 10.1.1.0/24 หรือ 192.168.1.0/24) เพื่อเชื่อมต่อกับพอร์ต 22222 บนโฮสต์ซึ่งเราจะส่งต่อไปยังพอร์ต 22 ของ แขกพิเศษ ". ต้องเป็นแขกที่แน่นอน (ซึ่งจะทำให้สามารถกำหนดค่า IP ของคุณทั้งหมดมีประโยชน์มากขึ้นและคุณสามารถเปลี่ยนได้ทั้งหมดในที่เดียวโดยไม่ต้องเปิด VM แต่ละตัว) เช่นเดียวกับที่ทำผ่านเราเตอร์อินเทอร์เน็ตของคุณเพื่อให้เกมต่างๆ ผ่าน ฯลฯ

  • ถัดไปต้องตัดสินใจว่าจะใช้บริการใด

    • อนุญาตการเชื่อมต่อบนเครื่องโฮสต์ของคุณไปยังพอร์ต "ภายนอก" ผ่าน iptables / ไฟร์วอลล์ พอร์ต 22 อาจถูกใช้บนโฮสต์โดย sshd ดังนั้นคุณอาจใช้บางอย่างเช่น 22222 ในกรณีนี้ให้เพิ่มบางสิ่งเช่นนี้ใน /etc/ufw/before.rules (และรีสตาร์ท ufw)

      # มาสก์เครือข่าย / ซับเน็ตท้องถิ่นของคุณอาจเป็นอะไรที่เหมือนกับ10.1.1.0/24 ...

      -A ufw-before-input -p tcp --dport 22222 -m state - รัฐใหม่ -s my_subnet_and_mask -j การยอมรับ `

    • ให้ VM ของคุณกับ IP ที่สงวนไว้ในการกำหนดค่าหลักของ VMware DHCP ( เป็นทางเลือก แต่ง่ายต่อการพึ่งพาหากคุณต้องการ "รูเข็ม" จากโฮสต์ ) โดยเพิ่มสิ่งนี้ลงที่ด้านล่างของ / etc / vmware / vmnet8 / DHCPD / dhcpd.conf

      # Just like a normal dhcpd reservation
      host my_vm_1 {
           hardware ethernet *your_vm_eth_mac_here**;
           # This is in default range for guests, but outside the 'pool'.
           # - check that it matches your vmware config
           fixed-address 192.168.198.10; 
           # And/or your own internal nameserver etc
           option domain-name-servers 8.8.8.8;
           option domain-name "some_domain_suffix";
           # This is the default default-route of the VM
           option routers 192.168.198.2; 
      }
      
    • บอก VMWare เพื่อส่งต่อการเชื่อมต่อจาก 22222 ไปยังแขก: 22 โดยเพิ่มสิ่งนี้ในส่วน [ขาเข้าtcp] ของ /etc/vmware/vmnet8/nat/nat.conf จากนั้นเริ่มบริการ vmware (ดูหมายเหตุด้านล่าง)

      [incomingtcp]

      22222 = 192.168.198.10:22

    • คุณอาจต้องอนุญาตให้มีการเชื่อมต่อพอร์ต 22 ในแขกของคุณขึ้นอยู่กับว่ามันคืออะไร / ถ้ามันมีไฟร์วอลล์ของมันเอง ในกรณีของแขก OS X นี้ก็คือการเปิดใช้งาน "การเข้าสู่ระบบระยะไกล" ผ่านการตั้งค่าการแชร์บน linux มันอาจจะผ่าน ufw เช่นเดียวกับโฮสต์ด้านบน ฯลฯ

ดังนั้นเมื่อเสร็จสิ้นคุณสามารถใช้แล็ปท็อปหรือเครื่องอื่น ๆ บน LAN ไปยังเวิร์กสเตชันของคุณ (โฮสต์ vmware) ใน 22222 และคุณจะถูกกระรอกไปยังแขกที่คุณบอกให้ส่งต่อให้คุณ ดังที่กล่าวไว้ข้างต้นถ้าคุณบอกว่าต้องการเชื่อมต่อกับเซิร์ฟเวอร์ postgres บนเกสต์ (หรือเซิร์ฟเวอร์ vnc ซึ่งมักจะไม่เข้ารหัส) คุณสามารถสร้างช่องสัญญาณในคำสั่งเดียวกัน (แทนที่จะเพิ่มไปยัง dhcp conf) สำหรับเช่น

console ~> ssh root@hostip -p 22222 -L 54320:localhost:5432

และคุณจะถูกส่งต่อไปยังแขกผ่านทางไอพีไปข้างหน้าใน vmware และสามารถชี้เครื่องมือ pgadmin3 ของคุณไปที่ localhost: 54320 (ไม่ใช่แบบพิเศษ) บนแล็ปท็อปของคุณและการจราจรบนเครือข่ายของคุณจะถูกเข้ารหัส (หมายเหตุ 'localhost' มีการส่งต่อไปยังแขกแล้ว)

หมายเหตุ

  • มีหลายวิธีที่จะทำสิ่งนี้ .. หนึ่งคุณสามารถเพียงแค่อุโมงค์ไปยังโฮสต์และระบุ IP ของแขกใน -L และมันจะ "แยกออก" และชี้ให้คุณมี แต่ตัวเลือก nat.conf ดีและ สะดวกและคุณไม่ต้องพิมพ์ทุกครั้ง นอกจากนี้ยังมีวิธีอื่นในการส่งต่อพอร์ต
  • ฉันได้เห็นการอ้างอิงถึงสองสามเธรดของเครือข่ายเสมือน gui ที่จะทำสิ่งนี้ (เช่น virtualbox มี) แต่ฉันไม่พบมันในรุ่นนี้
  • ฉันไม่ได้ใช้ windows ดังนั้นแม้ว่าฉันคิดว่ามันจะคล้ายกับการกำหนดค่าเป็นโฮสต์ฉันไม่แน่ใจ การกำหนดค่า NAT ควรใช้ได้กับแขก vmware ทุกคน (แม้ว่าฉันจะไม่ได้ใช้ VMWare รุ่นอื่น ๆ ก็ตาม)
  • VMware ตั้งค่าเส้นทางเพื่อให้โฮสต์สามารถติดต่อแขก NAT โดยตรงโดยตรงจากคอนโซลของโฮสต์ฉันสามารถ ping / ssh ฯลฯ NAT guest 192.168.198.10 (กำหนดไว้ด้านบน) โดยตรง

    console ~> route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    <snip>
    192.168.198.0   0.0.0.0         255.255.255.0   U     0      0        0 vmnet8
    192.168.233.0   0.0.0.0         255.255.255.0   U     0      0        0 vmnet1
    
  • จาก linux note มี viddware บางตัวที่มี systemd init เพื่อเริ่มทำงานอย่างอัตโนมัติและพร้อมกับที่ฉันพบฉันไม่สามารถรีสตาร์ท vmware (vmci ไม่โหลดอีกครั้ง) และฉันต้องรีสตาร์ท เครื่องของฉันเพื่อทำ NAT / DHCP ให้เหนือสิ่งอื่นใด แต่คุณอาจไม่มีปัญหา มีเธรดบางส่วนที่มีโซลูชัน systemd ว่า

ฟังดูดี แต่ ufw ไม่ปรากฏบนเครื่อง OS X 10.9.5 ของฉัน เป็นสิ่งที่เก่ากว่า OS X แต่ตอนนี้ใช้อย่างอื่นแทนหรือไม่
Steve Jorgensen

สวัสดี @ SteveJorgensen, ufw อยู่ภายใต้ linux (โฮสต์ของฉันคือ linux และแขกรับเชิญคือ OS X ในคำตอบนี้) แต่เป็นแนวคิดเดียวกันกับ OS X ในฐานะโฮสต์ อนุญาตให้เข้าถึงบางพอร์ตที่เฉพาะเจาะจง (ในกรณีข้างต้น 22222) บนโฮสต์ด้วยเครื่องมืออะไรก็ตามที่เหมาะสมและแจ้งให้ VMware ทำการส่งต่อไปยังแขก การกล่าวถึง ufw อื่น ๆ คือสิ่งที่คุณมีในฐานะแขกอาจมีไฟร์วอลล์ที่เปิดใช้งานดังนั้นคุณอาจต้องลงชื่อเข้าใช้เกสต์และอนุญาตการเข้าถึงพอร์ตที่คุณเปลี่ยนเส้นทางไป (ในกรณีข้างต้น 22)
herdingofthecats

ฉันยังไม่มี OS X ในขณะนี้ แต่ดูเหมือนว่าฉันจะจำได้ว่าใช้ipfwในบางจุด ฉันค้นหาคุณอย่างรวดเร็วและไม่เห็นโพสต์ที่เป็นประโยชน์มากมาย แต่สิ่งนี้กล่าวถึงpfctlซึ่งฉันเห็นในโพสต์อื่นดูเหมือนว่าจะเป็นการทดแทน pfctl ใน OS X 10.10 ขึ้นไป ฉันไม่สามารถทดสอบมันขอโทษ แต่หวังว่ามันจะช่วยได้นิดหน่อย
นอกบ้าน

2

เพื่อทำให้สิ่งต่าง ๆ ง่ายขึ้น:

  1. เรียกใช้ VM ของคุณ
  2. จากเมนู> เครื่องเสมือน> อะแดปเตอร์เครือข่าย> เชื่อมต่อ
  3. ใน VM ของคุณหาอยู่ IP ifconfigของคุณเช่นในลินุกซ์:
  4. ssh user@ipจากโฮสต์จุ๊ใช้

ฉันสมมติว่าคุณได้ติดตั้งและใช้งานบริการ SSH แล้ว


1

แทนที่จะทราบว่า IP กับ SSH เป็นอะไรฉันได้ตั้งค่า Avahi บน Linux แขกของฉันดังนั้นมันจึงเผยแพร่ชื่อโฮสต์แบบไดนามิกลองดูคำตอบของฉันที่นี่: /superuser//a/710233/242604

หวังว่านี่จะช่วยได้!


-1

คุณสามารถใช้บริดจ์เครือข่ายอินเตอร์เฟสที่ช่วยเชื่อมต่ออินเทอร์เน็ตและการเชื่อมต่อ SSH ได้ง่าย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.