ไม่สามารถ SSH ลงในเครื่องเสมือน Vagrant


11

เครื่องจรจัดในพื้นที่ติดตั้งที่อยู่ IP กับชื่อโฮสต์10.0.0.23lamp-vm

ใช้vagrant sshคำสั่งฉันสามารถเชื่อมต่อได้ดีและทำทุกอย่างที่ฉันต้องการ

สิ่งนี้สร้างข้อผิดพลาด

$ ssh vagrant @ lamp-vm -v -v

debug1: เชื่อมต่อไปยังที่อยู่ 10.0.0.23 พอร์ต 22: หมดเวลาการ
เชื่อมต่อ ssh: เชื่อมต่อกับโฮสต์ lamp-vm พอร์ต 22: การเชื่อมต่อหมดเวลา

ฉันไฟล์ประกอบด้วย /etc/hosts10.0.0.23 lamp-vm

ไฟล์. ssh / config ของฉันดูเหมือนว่า

Host lamp-vm
ผู้ใช้งานคนจรจัด
IdentityFile ~ / .ssh / คนจรจัด

ฉันได้ลองใช้คำสั่ง ssh ทั้งที่มีและไม่มีคำสั่ง-i /path/to/.sh/identity_fileเช่นกัน

ฉันจะเชื่อมต่อกับเครื่องเสมือน Vagrant ของฉันโดยใช้ SSH ได้อย่างไร

คำตอบ:


8

ฉันต้องเผชิญกับปัญหานี้ด้วยและนี่คือการกำหนดค่าสุดท้ายของฉันที่อนุญาตให้ฉันไปยังเครื่องสั่นสะเทือนของฉันจากที่ใดก็ได้ในเครื่องโฮสต์ของฉัน

Vagrantfile:

...
# Setting up private_network to have virtual host
config.vm.network :private_network, ip: "192.168.33.10"

# Enable ssh forward agent
config.ssh.forward_agent = true
...

ssh เป็นเครื่อง:

ssh vagrant@192.168.33.10

คุณจะถูกถามให้ใส่รหัสผ่าน (ค่าเริ่มต้นคือคนพเนจร):

vagrant@192.168.33.28's password:

และบูมคุณอยู่ใน!

PS * คุณสามารถใช้ scp ได้ทุกที่ในเครื่องโฮสต์ของคุณ:

scp /path/to/src/file vagrant@192.168.33.10:/path/to/destination/file

ในขณะที่ใช้งานได้มันค่อนข้างบอบบาง - ฉันพบว่า Vagrantfile ของเราทำให้เกิดการแก้ไข / etc / network / interfaces บน VirtualBox VM ซึ่งหมายความว่าการเชื่อมต่อ SSH ของฉันจะลดลง การเชื่อมต่อ localhost ( ssh -p 2222 vagrant@localhost) จะไม่ได้รับผลกระทบจากสิ่งนี้
RichVel

8

มันเก่า แต่ไม่มีคำตอบฉันจะให้ คำสั่ง:

vagrant ssh

มีค่าเท่ากับ

ssh vagrant@localhost -p 2222 -i .vagrant/machines/default/virtualbox/private_key

นี่เป็นพฤติกรรมเริ่มต้นหากคุณเปลี่ยนคำสั่งการเปลี่ยนแปลงอย่างเหมาะสม ก่อนอื่น Vagrant จะสร้างผู้ใช้คนจรจัดบนกล่องแขกของคุณและคุณจะใช้ผู้ใช้นั้นเพื่อ ssh ตามที่คนก่อนหน้าบอกไว้มันจะส่งต่อทราฟฟิกจากพอร์ต 2222 บนโฮสต์ของคุณไปยังพอร์ต 22 บนแขกของคุณตามค่าเริ่มต้น (เมื่อคุณใช้คนจรจัดขึ้นคุณจะเห็นข้อความที่แสดง) และสุดท้าย Vagrant จะสร้างคีย์สำหรับเซสชัน ssh ดังนั้นคุณไม่จำเป็นต้องทำดังนั้นคุณต้องระบุคีย์สาธารณะเป็นอาร์กิวเมนต์เมื่อเชื่อมต่อผ่าน ssh


นี่คือคำตอบที่แท้จริงและถูกต้อง! ทำงานได้โดยไม่มีปัญหาด้วย mobaxterm เป็นต้น คุณต้องระบุเส้นทางแบบเต็มสำหรับ private_key
sineverba

6

พฤติกรรมนี้เกิดจากการออกแบบ

Vagrant ใช้โหมด VirtualBox NATซึ่งหมายถึงการใช้การส่งต่อพอร์ต

คุณไม่สามารถ SSH โดยตรงกับ VM ของคุณโดยใช้โหมด NAT

การใช้ 'คนจรจัด ssh' หมายถึงคนจรจัดจะทำการส่งต่อพอร์ตให้คุณดังนั้นคุณไม่ต้องกังวลกับมัน ฉันคิดว่ามันจะเชื่อมต่อกับ localhost บนพอร์ต 2222 โดยค่าเริ่มต้น แต่จะพยายามเรียงลำดับการชนกันของหมายเลขพอร์ตใด ๆ

หากคุณต้องการ SSH โดยตรงกับ VM ของคุณให้เปลี่ยน VM เป็นโหมดเครือข่ายแบบโฮสต์หรือบริดจ์


ขอบคุณ Philip แต่ฉันจะแก้ปัญหาอย่างไร ขออภัยที่ไม่มีประสบการณ์
csi

1
ฉันใช้โหมดโฮสต์เท่านั้นและยังคงมีปัญหาอยู่
csi

ควรเป็นคำตอบที่ยอมรับได้ มีประโยชน์มากที่จะเข้าใจสิ่งนี้ - การใช้ localhost บนพอร์ต 2222 เป็นเส้นทางไปสู่การตั้งค่า Vagrant ที่ใช้งานได้ (ด้วยเหตุผลบางอย่างที่ฉันไม่สามารถรับคีย์ ทำงานดังนั้นฉันจึงลงเอยด้วยการระบุคีย์ส่วนตัวและชื่อผู้ใช้ที่แตกต่างกันใน Vagrantfile แต่ส่วน localhost พอร์ต 2222 ไม่จำเป็นต้องเปลี่ยน
RichVel

5

ฉันจะเพิ่มสิ่งนี้เป็นความคิดเห็น แต่ตอนนี้ฉันไม่มีตัวแทนเพียงพอที่จะทำเช่นนั้น ฉันได้เขียนวิธีการตั้งค่า VM ของคุณไปที่โหมด bridged ที่นี่:

/ubuntu/116861/setting-up-a-network-between-a-host-and-guest-virtual-machine/116909#116909

ฉันหวังว่าคุณจะพบว่ามีประโยชน์นี้!


+1 ที่นี่และที่ AU.SE ดีเขียนขึ้น
msanford

3

Windows / Vagrant / Ubuntu

นี่คือสิ่งที่ใช้ได้ผลสำหรับฉันและคุณสามารถทราบได้อย่างรวดเร็วว่าจะใช้งานได้หรือไม่โดยเรียกใช้งานบนไคลเอนต์ ssh

ssh vagrant@127.0.0.1 -p 2222 -v

-v จะวางไว้ในโหมด verbose และแสดงข้อมูลการดีบัก ...

$ ssh vagrant@127.0.0.1 -p 2222 -v
OpenSSH_7.1p1, OpenSSL 1.0.2e 3 Dec 2015
debug1: เชื่อมต่อกับ 127.0.0.1 [127.0.0.1] พอร์ต 2222
debug1: สร้างการเชื่อมต่อแล้ว
debug1: identity file /home/Jamie/.ssh/id_rsa type 1
debug1: key_load_public: ไม่มีไฟล์หรือไดเรกทอรี
debug1: identity file /home/Jamie/.ssh/id_rsa-cert ประเภท -1
debug1: key_load_public: ไม่มีไฟล์ดังกล่าวหรือ ไดเรกทอรี
debug1: ไฟล์ประจำตัว /home/Jamie/.ssh/id_dsa ประเภท -1
debug1: key_load_public: ไม่มีไฟล์หรือไดเรกทอรี
debug1: ไฟล์ประจำตัว /home/Jamie/.ssh/id_dsa-cert ประเภท -1
debug1: key_load_public: ไม่มี ไฟล์หรือไดเรกทอรี
debug1: ไฟล์ประจำตัว /home/Jamie/.ssh/id_ecdsa ประเภท -1
debug1: key_load_public: ไม่มีไฟล์หรือไดเรกทอรี
debug1: ไฟล์ประจำตัว /home/Jamie/.ssh/id_ecdsa-cert ประเภท -1
debug1: key_load_public: ไม่มีไฟล์หรือไดเรกทอรี
debug1: identity file /home/Jamie/.ssh/id_ed25519 ประเภท -1
debug1: key_load_public: ไม่มีไฟล์หรือไดเรกทอรี
debug1 ดังกล่าว: ไฟล์ข้อมูลประจำตัว /home/Jamie/.ssh/id_ed25519-cert ประเภท -1
debug1: การเปิดใช้งานโหมดความเข้ากันได้สำหรับโปรโตคอล 2.0
debug1: สตริงรุ่นท้องถิ่น SSH-2.0-
OpenSSH_7.1 : รุ่นโปรโตคอลระยะไกล 2.0, รุ่นซอฟต์แวร์ระยะไกล OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.6
debug1: ตรงกับ: OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.6 pat OpenSSH_6.6.1 *
เข้ากันได้กับ debug1.0.0.0.022222222 '
debug1: SSH2_MSG_KEXINIT ส่งการ
เชื่อมต่อปิดโดย 127.0.0.1

ดังนั้น ... SSH2_MSG_KEXINIT หมายความว่ามีการแลกเปลี่ยนกุญแจ สิ่งนี้ล้มเหลวในไม่ช้า ...

ในกรณีนี้ฉันลบกุญแจของฉันและสร้างมันขึ้นมาใหม่บน VM ( http://ask.xmodulo.com/sshd-error-could-not-load-host-key.html )

$ ls -al / etc / ssh / ssh key
$ sudo rm -r / etc / ssh / ssh
key
$ sudo dpkg-reconfigure openssh-server

เมื่อคีย์ของฉันถูกสร้างใหม่ฉันสามารถ SSH ลงใน Vagrant Box ของฉันได้


0

ทำลายเครื่องเสมือน
โหลดเครื่องเสมือนใหม่
ทุกอย่างทำงานได้

ไม่แน่ใจว่าทำไม แต่เห็นได้ชัดว่ามีบางสิ่งไม่ได้โหลดอย่างถูกต้องในการจัดสรรครั้งแรก


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