พยายามใช้ SSH กับ VM Ubuntu ในท้องที่ด้วย Putty


145

ฉันได้ตั้งค่าเซิร์ฟเวอร์ VM ของ Ubuntu ติดตั้ง OpenSSH แล้วและตอนนี้ฉันกำลังพยายามเชื่อมต่อกับมันโดยใช้ Putty ภายใน Putty ภายใต้ "Host name" ฉันใส่ "Ubuntu" เพราะนี่คือสิ่งที่ฉันคิดว่ามันถูกเรียกเมื่อฉันติดตั้ง VM อย่างไรก็ตามฉันเพิ่งได้รับข้อผิดพลาด: "หมดเวลาการเชื่อมต่อ"

ฉันยังลองใส่ "127.0.0.1" ลงในชื่อโฮสต์ภายใน Putty และเพิ่งได้รับ "Connection Refused" โปรดทราบว่าฉันได้ทำการส่งต่อพอร์ตสำหรับ SSH และ HTTP ภายใน Oracle VM แล้วดังนั้นฉันจึงสูญเสียวิธีการเรียกใช้


FWIW bridged / host ไม่ทำงานสำหรับฉัน แต่ฉันสามารถแก้ไขได้โดยสาระสำคัญมีเพียง SSH'ing "out" (scp สามารถไปได้ทั้งสองวิธีหลังจากทั้งหมด) ดังนั้นฉันจึงไม่ต้องการการเข้าถึง SSH ภายในแขก
rogerdpack

คำตอบ:


183

VirtualBox จะสร้างเครือข่ายส่วนตัว (10.0.2.x) ซึ่งจะมีการเชื่อมต่อเครือข่ายโฮสต์ของคุณโดยใช้NAT (ยกเว้นกำหนดค่าไว้เป็นอย่างอื่น)

ซึ่งหมายความว่าคุณไม่สามารถเข้าถึงโฮสต์ใด ๆ ของเครือข่ายส่วนตัวจากเครือข่ายโฮสต์โดยตรง ในการทำเช่นนั้นคุณต้องส่งต่อพอร์ต ในการกำหนดค่าเครือข่ายของ VM คุณสามารถกำหนดค่า VirtualBox ให้เปิดพอร์ต 22 บน 127.0.1.1 (ที่อยู่ลูปแบ็คของโฮสต์ของคุณ) และส่งต่อทราฟฟิกใด ๆ ไปยังพอร์ต 22 จาก 10.0.2.1 (ที่อยู่ภายในของ VM)

ด้วยวิธีนี้คุณสามารถชี้สีโป๊วไปที่พอร์ต 22 จาก 127.0.1.1 และ VirtualBox จะเปลี่ยนเส้นทางการเชื่อมต่อนี้ไปยัง VM ของคุณโดยที่ ssh daemon จะตอบมันทำให้คุณสามารถเข้าสู่ระบบได้


20
ขอบคุณสิ่งนี้ใช้ได้สำหรับฉัน จาก cygwin ฉันสามารถทำได้ตอนนี้ssh username@127.0.1.1และฉันแผงที่คุณต้องการคือการตั้งค่า -> เครือข่าย -> การส่งต่อพอร์ตและของฉันตอนนี้มีลักษณะดังที่แสดงที่: imgur.com/BjGh3N2
7543

38
สิ่งนี้จะไม่ทำงานหากคุณมี ssh ที่ทำงานอยู่บนโฮสต์ของคุณเนื่องจากพอร์ตทับซ้อนกัน เปลี่ยนเส้นทางพอร์ต 127.0.1.1:2222 ถึง 10.0.2.X: 22 แล้วเรียกใช้ 'ssh 127.0.1.1 -p 2222' จากโฮสต์ของคุณ '
dzlatkov

8
ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง openssh-server ไว้ในไคลเอนต์ OS sudo apt-get install openssh-server
Illuminati

17
เพิ่งมีปัญหานี้ด้วยตัวเอง - ขอบคุณสำหรับการอธิบาย ฉันตามสิ่งที่คุณพูดโดยทั่วไป ฉันไปที่การตั้งค่าและการเชื่อมต่อของฉันแสดงว่า 'NAT' ฉันคลิกตัวเลือก 'การส่งต่อพอร์ต' ที่ด้านล่างของหน้าจอ ฉันตั้งชื่อ 'PuTTY-port-fwd' โปรโตคอล TCP โฮสต์ IP 127.0.0.1 โฮสต์พอร์ต 2222 แขก IP 10.0.2.15 แขกพอร์ต 22 ฉันเปิดตัว PuTTY และตั้งเป็นพอร์ต 127.0.0.1 2222 และเชื่อมต่อกับ vm OpenSUSE ของฉัน ขอขอบคุณพวกคุณหวังว่านี่จะช่วยให้ทุกคนในอนาคต ;-)
BubbleMonster

3
สิ่งนี้ใช้ได้สำหรับฉันแม้ว่าฉันจะต้องบอก VirtualBox ให้เปิดพอร์ต 2222 บน 127.0.0.1 จากนั้นฉันก็สามารถเข้าสู่ระบบโดยใช้ssh -p 2222 user@127.0.0.1
mchen.ja

44

ฉันต้องการใช้ผงสำหรับอุดรูเพื่อเชื่อมต่อกับอูบุนตูของฉันบนกล่องเสมือน (เหตุผลด้านความสะดวกสบาย, VB นั้นแปลกมากฉันไม่สามารถทำงานได้เว้นแต่จะอยู่ในเทอร์มินัลที่เหมาะสม) อย่างไรก็ตาม,

  1. ตรวจสอบให้แน่ใจว่าติดตั้งไคลเอ็นต์ ssh บน Linux ของคุณแล้ว sudo apt install sshถ้าไม่ได้ติดตั้ง
  2. ปิดระบบปฏิบัติการ
  3. ตอนนี้ใน VB ของคุณไปที่Settings -> Network ->เกี่ยวกับการAdapter 1เลือก->Host-only adapter คลิกOK
  4. ตอนนี้เริ่มระบบปฏิบัติการของคุณ วิ่งifconfig; ตอนนี้ที่อยู่ inet คือ IP ของคุณ
  5. ใช้สิ่งนี้และเรียกใช้บนผงสำหรับอุดรูของคุณ เข้าสู่ระบบด้วยข้อมูลประจำตัวของคุณ

ข้อเสียเพียงอย่างเดียวของการใช้อะแดปเตอร์สำหรับโฮสต์เท่านั้นคือแขกของคุณจะไม่สามารถเข้าถึงเครือข่ายที่กว้างขึ้น (เช่นอินเทอร์เน็ต)

หากคุณต้องการให้ VM ของคุณมีการเข้าถึงอินเทอร์เน็ตให้ปล่อยอะแด็ปเตอร์ 1 เป็น NAT และเปิดใช้งานอะแดปเตอร์ 2 ซึ่งกำหนดค่าเป็นอะแดปเตอร์สำหรับโฮสต์เท่านั้น สิ่งนี้จะช่วยให้ VM ของคุณเชื่อมต่ออินเทอร์เน็ตโดยใช้ NAT รวมถึงทำการเชื่อมต่อกับโฮสต์ของคุณโดยใช้โฮสต์เท่านั้น


4
"bridged" จะใส่ไอพีบนอินเทอร์เฟซในเครื่องของคุณและเชื่อมการเข้าถึงอินเทอร์เน็ตที่ดีกว่า
Duke

2
ข้อได้เปรียบของการใช้สองอินเตอร์เฟสดังที่อธิบายไว้ที่นี่ผ่านการเชื่อมโยงคือคุณไม่ต้องพึ่งพาเซิร์ฟเวอร์ dhcp ภายในเครื่องที่รับคำขอของคุณ เซิร์ฟเวอร์ dhcp ส่วนใหญ่ในสถานที่สาธารณะ (ariport, เครื่องบิน, โรงแรมและเครือข่ายของ บริษัท ส่วนใหญ่) จะไม่เสนอ IP ที่สองผ่านอะแดปเตอร์ไร้สายเดียวกันดังนั้น VM ที่เชื่อมต่อจะไม่ทำงานในสภาพแวดล้อมเหล่านั้น นี่เป็นขั้นตอนที่ดีมากเกี่ยวกับวิธีการตั้งค่าการกำหนดค่านี้โดยเฉพาะ: christophermaier.name/2010/09/01/…
Yves Dorfsman

ทำงานเหมือนมีเสน่ห์ แต่คุณควรใส่อแด็ปเตอร์ 2 ในตัวเลือกที่ 3 เพื่อให้ผู้คนออกจาก NAT คนเดียว
user3502626

ขอบคุณมาก ๆ.
ลุ

ขอบคุณมาก ๆ. แต่เมื่อฉันเปลี่ยนการตั้งค่าเครือข่าย Ubuntu จากNATเป็นhost only adapterมันไม่สามารถเชื่อมต่ออินเทอร์เน็ตได้อีกต่อไปโซลูชันใดบ้าง
ลุ

19

ก่อนอื่นคุณต้องตัดสินใจว่า VM ของคุณเชื่อมต่อกับเครื่องโฮสต์ของคุณผ่านการเชื่อมต่อบริดจ์หรือผ่าน NAT แต่วิธีอื่น ๆ คุณจะต้องใส่ที่อยู่ IP ของ VM ในการเชื่อมต่อเพื่อให้สามารถเชื่อมต่อกับ ip ในการทำงานของเทอร์มินัล VM คำสั่งนี้จะแสดงที่อยู่ IP ของเครื่อง (และไม่มี 127.0.0.1 ไม่ใช่ที่อยู่ IP ของเครื่อง)

VM # ip addr show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:d9:16:b3 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.1 scope global eth0
       valid_lft forever preferred_lft forever

ในกรณีนี้ที่อยู่ IP ของฉันจะเป็น 10.0.2.15

ก่อนอื่นให้แน่ใจว่าคุณสามารถสื่อสารในระดับพื้นฐานกับ VM เปิดหน้าต่างเทอร์มินัลในโฮสต์ของคุณและลอง ping VM

HOST # ping 10.0.2.15

PING 10.0.2.15 (10.0.2.15) 56(84) bytes of data.
64 bytes from 10.0.2.15: icmp_seq=1 ttl=64 time=0.045 ms
64 bytes from 10.0.2.15: icmp_seq=2 ttl=64 time=0.110 ms
64 bytes from 10.0.2.15: icmp_seq=3 ttl=64 time=0.099 ms

หากคุณได้รับผลมดตรวจสอบให้แน่ใจว่าคุณมีบริการ ssh ที่ทำงานบน VM ในเทอร์มินัลในประเภท VM ของคุณเป็นรูต

VM # netstat -lnpt | grep 22
tcp   0  0  0.0.0.0:22  0.0.0.0:*  LISTEN  2361/sshd

สิ่งนี้บอกว่าเรามีบริการ / กระบวนการที่มี PID (2361) ชื่อ sshd (OpenSSH daemon) กำลังฟังพอร์ต 22

คุณสามารถทดสอบว่าบริการทำงานอย่างถูกต้องหรือไม่โดยลองใช้ ssh จาก VM ด้วยตนเอง

VM # ssh 127.0.0.1

ถัดไปคุณตั้งชื่อเพื่อให้แน่ใจว่าคุณไม่ได้ปิดกั้นพอร์ต 22 ในไฟร์วอลล์ / iptables ของคุณฉันไม่อยากเชื่อเลย แต่ลองดูสิ ใน VM พิมพ์คำสั่งนี้เพื่อแสดง iptables

VM # iptables -nvL INPUT

ในผลลัพธ์คุณควรมีบรรทัดแบบนี้:

0  0  ACCEPT  tcp  --  *  *  0.0.0.0/0  0.0.0.0/0  tcp  dpt:22  ctstate  NEW

พยายามแล้วและที่อยู่ IP ของฉันคือ 10.0.2.15 ฉันลองป้อนเข้าไปใน Putty และเพิ่งได้รับconnection timed outข้อผิดพลาดอีกครั้ง ฉันยังพยายามnvLคำสั่งที่คุณกล่าวถึงและได้รับการโหลดของ (สำหรับการขาดคำดี) สิ่ง - Chain INPUT (policy accept......, chain FORWARD.....ฯลฯ
wickywills

ฉันเขียนคำตอบของฉันอีกครั้งด้วยคะแนนที่คุณสามารถตรวจสอบได้อีกโปรดแจ้งให้เราทราบ
Rabin

2
เกิดอะไรขึ้นถ้า ping 10.0.2.15 หมดเวลา ฉันใช้ NAT
Dan Dascalescu


เพื่อความสะดวก: iptables -A INPUT -p tcp --dport ssh -j ACCEPTจะอนุญาตการรับส่งข้อมูลหากคุณไม่เห็น tcp ใน iptables ของคุณ
Eric Hodgins

15

ความละเอียดของฉันคล้ายกับ Roman T แต่ฉันจำเป็นต้องเพิ่มขั้นตอนพิเศษอีกสองสามขั้น ในกรณีของฉันฉันมี Ubuntu Server 14 VM ทำงานบน Windows 8 Desktop ในโดเมน Windows 2008 ถ้าฉันลองใช้ NAT หรือ Bridge ฉันสามารถเข้าถึงอินเทอร์เน็ต แต่ไม่สามารถเชื่อมต่อผ่าน SSH ได้

ถ้าฉันลองใช้อะแด็ปเตอร์โฮสต์เท่านั้นนั่นจะทำให้ฉันสามารถใช้ SSH กับเครื่อง แต่ไม่สามารถเข้าถึงอินเทอร์เน็ต

ฉันลองส่งต่อพอร์ตด้วยและไม่มีความสุข เปิด Wireshark และไม่พบ VM

ดังนั้นทางออกของฉันคือการเพิ่มอะแดปเตอร์เครือข่ายที่สอง

วิธี

เมื่อ VM ทำงานลง

  1. คลิกการตั้งค่า> เครือข่ายคลิกอะแดปเตอร์ 1 แล้วเลือกบริดจ์อะแดปเตอร์
  2. คลิกอะแดปเตอร์ 2 และเลือกอะแดปเตอร์โฮสต์เท่านั้น
  3. คลิกไฟล์> ค่ากำหนด> เครือข่ายภายใต้เครือข่าย NAT หากคุณไม่เห็นเครือข่าย NAT คลิกที่ไอคอน + เพื่อเพิ่มเครือข่าย NAT
  4. คลิกเครือข่ายเฉพาะโฮสต์หากคุณไม่เห็นโฮสต์เครือข่ายเท่านั้นให้คลิกไอคอน + เพื่อเพิ่มเครือข่าย

เริ่มต้น VM

  1. ในการดูอะแดปเตอร์เครือข่ายคุณต้องพิมพ์

    ifconfig -a
    
  2. คุณอาจเห็นอะแดปเตอร์เครือข่ายถูกเพิ่มด้วยที่อยู่ mac แต่ไม่ใช่ IP ใช่หรือไม่

  3. ถ้าเป็นเช่นนั้นคุณต้องแก้ไข / etc / network / interfaces เพื่อกำหนดค่า DHCP ตัวอย่างด้านล่างใช้ VI / VIM แต่คุณสามารถใช้โปรแกรมแก้ไขที่คุณเลือก

    sudo vi /etc/network/interfaces
    
  4. เพิ่มบรรทัด

    auto eth1
    iface eth1 inet dhcp
    
  5. บันทึกและออกจากไฟล์
  6. จากนั้นลองรีสตาร์ทบริการเครือข่ายโดยใช้คำสั่งด้านล่าง

    sudo service networking restart
    
  7. หรือหากล้มเหลวให้รีสตาร์ท VM
  8. เมื่อรีสตาร์ทประเภทด้านล่างเพื่อดูว่าคุณได้รับการจัดสรร eth1 ที่อยู่ IP

    ifconfig -a
    
  9. ถ้าเป็นเช่นนั้นดูว่าคุณสามารถ SSH เพื่อ VM

ฉันลองวิธีการแก้ปัญหาของคุณแล้ว แต่ไม่มีการกำหนด IP ให้กับอินเทอร์เฟซใหม่ มีอะไรเพิ่มเติมที่ฉันเปิดใช้งาน DHCP ใน VBox ของฉัน
Athlan

12

คำแนะนำต่อไปนี้ทำงานกับ Ubuntu 14.04 และ Oracle VirtualBox 4.3.30

ทำสิ่งนี้ใน VirtualBox:

  1. คลิกขวาที่เครื่องเสมือนของคุณเลือก "การตั้งค่า" จากนั้นเลือก "เครือข่าย"

  2. ถัดจาก "แนบกับ" เลือก "อะแดปเตอร์สำหรับโฮสต์เท่านั้น" ในฐานะที่เป็นหมายเหตุด้านข้าง "ตัวปรับต่อบริดจ์" จะใช้งานได้ตรวจสอบเอกสารประกอบ VirtualBox สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับตัวเลือกแต่ละตัว

ทำสิ่งนี้ภายในเครื่องเสมือนของคุณ:

  1. ค้นหาที่อยู่ IP ifconfigเครือข่ายของคุณโดยการเปิดสถานีและการพิมพ์ สังเกตที่อยู่ IP ที่แสดงถัดจาก eth0 ใต้ "inet addr" คุณยังสามารถดูที่อยู่ IP ของคุณได้หากคุณคลิกที่ไอคอนเครือข่ายที่มุมบนขวาของเดสก์ท็อปแล้วเลือก "ข้อมูลการเชื่อมต่อ"

  2. ติดตั้ง openssh-server โดยพิมพ์ข้อความต่อไปนี้ที่เทอร์มินัล:

    sudo apt-get install openssh-server
    
  3. ในกรณีที่รีสตาร์ทเครื่องเสมือน

ตอนนี้คุณสามารถเชื่อมต่อจาก PuTTY โดยใช้ที่อยู่ IP จากขั้นตอนที่ 1 ด้านบนและพอร์ต 22


2

สำหรับ Ubuntu 18.04 และ VirtualBox 5.2:

  1. สร้างส่วนต่อประสานเครือข่ายโฮสต์

    ผม. บน Virtualbox คลิก/ FileHost Network Manager

    ii หากคุณไม่ได้มีอะแดปเตอร์เครือข่ายโฮสต์ (ค่าเริ่มต้นvboxnet0) Createให้คลิก

  2. เปิดใช้งานการตั้งค่าอะแดปเตอร์สำหรับโฮสต์เท่านั้นสำหรับ VM

    ผม. บน Virtualbox คลิกขวาบน VM Settingsของคุณและเลือก

    ii คลิกและเลือก NetworkAdapter 2

    สาม. Enable Network Adapterคลิก

    iv ภายใต้เลือกAttached to: Host-only Adapterชื่อของอะแดปเตอร์ที่คุณสร้างในขั้นตอนที่ 1 ควรปรากฏขึ้น (ค่าเริ่มต้นvboxnet0)

  3. กำหนดการตั้งค่าเครือข่ายใน VM

    ผม. เริ่ม VM ip aคุณและตรวจสอบซึ่งอินเตอร์เฟซที่ถูกเพิ่มเข้ามา: ค้นหาอินเทอร์เฟซที่ไม่มีที่inetอยู่ enp0s8ในเหมืองก็คือ

    ii /etc/netplan/01-netcfg.yamlแก้ไข sudo vi /etc/netplan/01-netcfg.yamlเช่น

    สาม. ภายใต้การตั้งค่าสำหรับอะแดปเตอร์ดั้งเดิมให้เพิ่มรายละเอียดการกำหนดค่า:

    enp0s8:
        addresses: [192.168.56.2/24]
        gateway4: 192.168.56.1
        dhcp4: no
    

    สิ่งนี้จะกำหนดที่อยู่ IP แบบคงที่สำหรับ VM เพื่อความสะดวกของ SSH หากคุณต้องการdhcpที่จะจัดการกับที่อยู่แทนออกจากที่อยู่และประตูการตั้งค่าและการตั้งค่าไป dhcp4yes

    iv โหลดไฟล์การกำหนดค่าsudo netplan applyซ้ำ:

  4. SSH เป็น VM ของคุณ

    ผม. หากคุณไม่ได้ติดตั้งsshใน sudo apt install sshVM:

    ii จากเครื่องโฮสต์ของคุณ SSH เข้าไปใน ssh <username>@192.168.56.2VM:


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