การรับรองความถูกต้องของ Vagrant ssh


147

ปัญหาเกี่ยวกับการรับรองความถูกต้อง ssh:

==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: bridged
==> default: Forwarding ports...
    default: 22 => 2222 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Error: Connection timeout. Retrying...
    default: Error: Connection timeout. Retrying...
    default: Error: Connection timeout. Retrying...
    default: Error: Connection timeout. Retrying...
    default: Error: Authentication failure. Retrying...
    default: Error: Authentication failure. Retrying...
    default: Error: Authentication failure. Retrying...
    default: Error: Authentication failure. Retrying...
    default: Error: Authentication failure. Retrying...

ฉันสามารถCtrl+Cออกจากห่วงการตรวจสอบแล้วประสบความสำเร็จใน ssh ด้วยตนเอง

ฉันทำตามขั้นตอนต่อไปนี้ในกล่องผู้เยี่ยมชม:

  • เปิดการใช้งานสำหรับRemote LoginAll Users

  • สร้าง~/.sshไดเรกทอรีด้วย0700สิทธิ์

  • สร้าง~/.ssh/authorized_keysไฟล์ที่มี0600สิทธิ์

  • วางกุญแจสาธารณะนี้ ลงใน~/.ssh/authorized_keys

ฉันได้ลองใช้เครือข่ายส่วนตัว (hostonly) แทนเครือข่ายสาธารณะ (bridged) โดยใช้บรรทัดนี้ใน Vagrantfile:

config.vm.network "private_network", ip: "172.16.177.7"

ฉันได้รับผลลัพธ์เดียวกัน (ยกเว้นAdapter 2: hostonly) แต่ไม่สามารถ ssh ด้วยตนเองได้

config.vm.network "private_network", ip: "10.0.0.100"ฉันยังพยายาม

ฉันยังลองตั้งค่าconfig.ssh.passwordใน Vagrantfile สิ่งนี้จะส่งออกSSH auth method: passwordแต่ก็ยังไม่ได้ตรวจสอบ

และฉันก็ลองสร้างกล่องขึ้นมาใหม่และตรวจสอบทั้งหมดข้างต้นอีกครั้ง

ดูเหมือนว่าคนอื่น ๆ จะประสบความสำเร็จกับการกำหนดค่านี้ดังนั้นจะต้องมีบางสิ่งที่ฉันทำผิด

ฉันพบกระทู้นี้และเปิดใช้งาน GUI แต่ไม่ได้ช่วย

คำตอบ:


1

ตรวจสอบให้แน่ใจว่าอินเตอร์เฟสเครือข่ายแรกของคุณคือ NAT อินเทอร์เฟซเครือข่ายอื่นที่สองสามารถเป็นอะไรก็ได้ที่คุณต้องการเมื่อคุณกำลังสร้างกล่อง อย่าลืมผู้ใช้ Vagrant ดังที่กล่าวไว้ในเธรด Google

โชคดี.


171

สำหรับข้อมูลทั่วไป:โดยค่าเริ่มต้นเพื่อเชื่อมต่อ ssh คุณสามารถใช้

ผู้ใช้: vagrantรหัสผ่าน:vagrant

https://www.vagrantup.com/docs/boxes/base.html#quot-vagrant-quot-user

ก่อนอื่นให้ลอง:เพื่อดูว่าคนเร่ร่อนinsecure_private_keyอยู่ในการกำหนดค่าเครื่องของคุณ

$ vagrant ssh-config

ตัวอย่าง:

$ vagrant ssh-config
Host default
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile C:/Users/konst/.vagrant.d/insecure_private_key
  IdentitiesOnly yes
  LogLevel FATAL

http://docs.vagrantup.com/v2/cli/ssh_config.html

ขั้นที่สองทำ: เปลี่ยนเนื้อหาของไฟล์insecure_private_keyด้วยเนื้อหาของไพรเวตคีย์ส่วนตัวของระบบ

หรือใช้: เพิ่มลงใน Vagrantfile:

Vagrant.configure("2") do |config|
  config.ssh.private_key_path = "~/.ssh/id_rsa"
  config.ssh.forward_agent = true
end
  1. config.ssh.private_key_path เป็นกุญแจส่วนตัวในพื้นที่ของคุณ
  2. ไพรเวตคีย์ของคุณต้องพร้อมใช้งานกับ local ssh-agent ssh-add -Lคุณสามารถตรวจสอบกับ หากไม่มีอยู่ในรายการให้เพิ่มด้วยssh-add ~/.ssh/id_rsa
  3. อย่าลืมเพิ่มกุญแจสาธารณะของคุณ~/.ssh/authorized_keysใน Vagrant VM คุณสามารถทำได้โดยการคัดลอกและวางหรือใช้เครื่องมือเช่นssh-copy-id (ผู้ใช้: rootรหัสผ่าน: vagrantพอร์ต: 2222)ssh-copy-id '-p 2222 root@127.0.0.1'

หากยังใช้งานไม่ได้ให้ลองสิ่งนี้:

  1. ลบinsecure_private_keyไฟล์จากc:\Users\USERNAME\.vagrant.d\insecure_private_key

  2. เรียกใช้vagrant up(คนจรจัดจะถูกสร้างinsecure_private_keyไฟล์ใหม่)

ในกรณีอื่น ๆ การตั้งค่าforward_agentใน Vagrantfile :

Vagrant::Config.run do |config|
   config.ssh.forward_agent = true
end

ที่มีประโยชน์:

การกำหนดค่าgitอาจอยู่กับgit-scm.com

หลังจากที่ติดตั้งโปรแกรมนี้และสร้างระบบส่วนบุคคลคีย์ส่วนตัวจะอยู่ในเส้นทางโปรไฟล์ของคุณ:c:\users\USERNAME\.ssh\id_rsa.pub

PS:สุดท้าย - แนะนำให้คุณดูUbuntu บน Windows 10


4
ในกรณีของฉันมันเป็นปัญหาที่เกิดขึ้นเพราะconfig.ssh.private_key_path = "~/.ssh/id_rsa"มีการลบบรรทัดนี้จะทำให้การจัดเตรียมงาน
Holms

ทั้งหมดนี้ใช้ได้ แต่ฉันต้องลบรายการของฉันในโฮสต์ที่รู้จักด้วย ฉันมีปัญหาเมื่อย้ายสถานที่และลงชื่อเข้าใช้
Pumphouse

@shilovk +1 ขอบคุณขอบคุณมากขอบคุณ "ที่สองทำ" ทำเคล็ดลับ อีกครั้งขอบคุณชายมาก
whitesiroi

อันนี้ชี้ให้ฉันในทิศทางที่ถูกต้องในกรณีของฉันทั้งหมดที่ฉันต้องทำคือการลบไฟล์. agrant / machine / default / virtualbox / private_key และหลังจากรัน vagrant ขึ้นมันแทนที่ไฟล์ด้วยไฟล์ที่ถูกต้อง - ฉันจะสำรองข้อมูล ไฟล์ในกรณี
andrux

ขั้นตอนแรกและสำคัญที่สุดคือตรวจสอบการตั้งค่า BIOS ตรวจสอบให้แน่ใจว่าเปิดใช้งานการจำลองเสมือนแล้ว
Bahman.A

83

ไม่มีข้อใดถูกเลยสำหรับฉัน ยังไงก็ตามกล่องก็มีกุญแจสาธารณะที่ไม่ถูกต้องเพิ่มในไฟล์authorised_keysผู้ใช้คนจรจัด

หากคุณยังคงสามารถ ssh ในช่องที่มีรหัสผ่านคนจรจัด (รหัสผ่านคือคนจรจัด) เช่น

ssh vagrant@localhost -p 2222

จากนั้นคัดลอกเนื้อหากุญแจสาธารณะจากhttps://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pubไปยังไฟล์ authorised_keys ด้วยคำสั่งต่อไปนี้

echo "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key" > .ssh/authorized_keys

เมื่อเสร็จแล้วให้ออกจาก VM และลองคนจรจัด ssh อีกครั้ง มันควรจะใช้งานได้แล้ว


4
ทำงานvagrant reloadหลังจากอัปเดตไฟล์ authorized_keys Vagrant จะตรวจหาคีย์ที่ไม่ปลอดภัยโดยอัตโนมัติและสร้างรหัสใหม่ให้คุณ ควรทำงานหลังจากนั้น
ProfileTwist

47

หากคุณพบปัญหาเกี่ยวกับคนจรจัด 1.8.5 จากนั้นตรวจสอบหัวข้อนี้ใน GitHub:

https://github.com/mitchellh/vagrant/issues/7610

มันเกิดขึ้นโดยทั่วไปจากปัญหาการอนุญาตการแก้ปัญหาเป็นเพียง

vagrant ssh 
password: vagrant 
chmod 0600 ~/.ssh/authorized_keys
exit

แล้วก็

vagrant reload 

FYI: ปัญหานี้ส่งผลกระทบกับ CentOS เท่านั้น Ubuntu ทำงานได้ดี


สมมุติว่าฉันมี 5 เครื่องสำหรับไฟล์คนจรจัดหนึ่งไฟล์ ทุกครั้งที่ฉันรันใหม่ฉันต้องดำเนินการกับแต่ละเครื่อง ฉันจะแก้ไขสิ่งนี้อย่างถาวรสำหรับการตั้งค่าคนจรจัดโดยใช้ Centos หรือไม่?
Pol

เพิ่งต้องอัพเกรดคนเร่ร่อนไปเป็นรุ่น 1.8.6 เพื่อใช้เป็น 1.8.5 ซึ่งข้อผิดพลาดที่มีอยู่
Pol

42

รันคำสั่งต่อไปนี้ใน guest machine / VM:

wget https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub -O ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chown -R vagrant:vagrant ~/.ssh

จากนั้นก็หยุดคนจรจัด นี่จะเป็นการลบและสร้างคีย์ส่วนตัวของคุณใหม่

(ขั้นตอนเหล่านี้ถือว่าคุณได้สร้างไว้แล้วหรือมีไดเร็กทอรี ~ / .ssh / และ ~ / .ssh / authorized_keys ภายใต้โฟลเดอร์บ้านของคุณอยู่แล้ว)


26

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

  1. เข้าสู่ระบบเพื่อคนจรจัดเครื่อง: รหัสผ่านการใช้งานเริ่มต้นvagrant sshvagrant
  2. สร้างคีย์ ssh: ตัวอย่างssh-keygen -t rsa -b 4096 -C "vagrant"( ตามคำแนะนำที่เกี่ยวข้องโดย GitHub )
  3. เปลี่ยนชื่อแฟ้มกุญแจสาธารณะ (โดย id_rsa.pub เริ่มต้น) mv .ssh/id_rsa.pub .ssh/authorized_keysเอาชนะคนเก่า:
  4. บริการโหลด SSH sudo service ssh reloadในกรณีที่ต้องการ:
  5. คัดลอกไฟล์กุญแจส่วนตัว (โดยค่าเริ่มต้น id_rsa) ไปยังเครื่องโฮสต์: ตัวอย่างเช่นใช้การรวมกันของ cat และคลิปบอร์ดcat .ssh/id_rsa, การระบายสีและการคัดลอก (ต้องมีวิธีที่ดีกว่าไปคิดค้น!)
  6. logoutออกจากระบบจากเครื่องจรจัด:
  7. ค้นหาคีย์ส่วนตัวปัจจุบันที่ใช้โดยคนพเนจรโดยดูที่การกำหนดค่า: vagrant ssh-config(ดูตัวอย่างÌdentityFile "/ พี่น้อง ... เหมือนกัน /private_key"
  8. แทนที่ไพรเวตคีย์ปัจจุบันด้วยคีย์ที่คุณสร้างที่เครื่องโฮสต์: ตัวอย่างเช่นnano /[...]/private_keyและวางจากคลิปบอร์ดหากทั้งหมดล้มเหลว ( โปรดทราบว่าถ้า private_key ของคุณไม่ได้ระบุโครงการ แต่ใช้ร่วมกับเครื่องร่อนใจหลายคนคุณควรกำหนดค่าเส้นทางด้วยตัวคุณเองเพื่อที่จะไม่ทำลายเครื่องทำงานที่สมบูรณ์แบบอื่น ๆ ! การเปลี่ยนเส้นทางนั้นง่ายเหมือนการเพิ่มบรรทัดconfig.ssh.private_key_path = "path/to/private_key"เข้าไปใน ) นอกจากนี้หากคุณใช้เครื่องPuPHPet ที่สร้างขึ้นคุณสามารถจัดเก็บรหัสส่วนตัวของคุณไปยังไฟล์puphpet/files/dot/ssh/id_rsaและมันจะถูกเพิ่มในการตั้งค่า ssh ของ Vagrantfile โดยอัตโนมัติ
  9. ทดสอบการตั้งค่า: vagrant sshควรใช้งานได้แล้ว

หากเป็นเช่นนั้นขอแสดงความยินดีกับตัวคุณเองlogoutเรียกใช้vagrant provisionหากจำเป็นและดำเนินงานต่อไปที่มีความหมาย

หากคุณยังคงประสบปัญหาอาจมีประโยชน์ในการเพิ่มการตั้งค่าสถานะ verbose ลงในคำสั่ง ssh เพื่อให้การดีบักง่ายขึ้น คุณสามารถผ่านมัน (หรือตัวเลือกอื่น ๆ สำหรับเรื่องนั้น) หลังจากเส้นประสองครั้ง vagrant ssh -- -vยกตัวอย่างเช่นการพิมพ์ อย่าลังเลที่จะเพิ่ม v มากเท่าที่คุณต้องการแต่ละคนจะให้ข้อมูลเพิ่มเติมแก่คุณ


คำตอบนี้ช่วยฉัน เพียงเพื่อแบ่งปันประสบการณ์ของฉัน: อย่างใด (อาจเป็นไปได้ในระหว่างการติดตั้ง Capistrano แต่ที่ไม่ได้รับการยืนยัน) ไฟล์ authorized_key ของฉันถูกลบใน VM แขกของฉัน สร้างมันใหม่โดยใช้ขั้นตอนเหล่านี้ทำงานและตอนนี้ฉันสามารถ ssh โดยไม่ต้องแจ้งรหัสผ่าน ขอบคุณ
Martin Joiner

หลังจากลบคีย์ทั้งสอง (สาธารณะ / ส่วนตัว) จากเครื่องโฮสต์ฉันสามารถทำซ้ำและแก้ไขด้วยกระบวนการนี้
vrwired

การใช้ Git ทำให้การถ่ายโอนเนื้อหาไฟล์นั้นเร็วขึ้น
lloan

1
อันนี้เหมาะกับฉันหลังจากที่ฉันได้ลองทำไปแล้วล้มเหลว .. ขอบคุณมาก!
ลัส

สิ่งนี้ใช้ได้สำหรับฉัน สิ่งเดียวที่ฉันทำแตกต่างกันคือใช้ssh vagrant@10.0.0.0 -p 22 (password: vagrant)เพื่อเข้าสู่ระบบ VM เนื่องจากvagrant sshไม่ได้ผลสำหรับฉัน 10.0.0.0เป็นที่อยู่ IP vagrantfileส่วนตัวผมได้ตั้งอยู่ในของฉัน
turrican_34

11

สิ่งนี้อาจเกิดขึ้นได้หากคุณพยายามบังคับให้ VM ของคุณใช้ผู้ใช้รูทโดยค่าเริ่มต้นสำหรับ SSH ....

ตัวอย่างเช่นการกำหนดค่าเช่นนั้นใน Vagrantfile ของคุณอาจทำให้เกิดความล้มเหลวนี้:

config.ssh.username = 'root'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'

วิธีแก้ปัญหา: ใส่ความคิดเห็นลงในบรรทัดเหล่านั้นแล้วลองอีกครั้ง!


2
สำหรับฉันเท่านั้นการตั้งค่า config.ssh.username = "คนพเนจร" และ config.ssh.password = "คนพเนจร" ได้หลอกลวง
psychok7

8

ปัญหาฉันได้รับข้อผิดพลาดในการตรวจสอบความถูกต้อง ssh บนกล่องที่ฉันจัดเตรียม ต้นฉบับทำงานได้ดี

.vagrant/machines/default/virtualbox/private_keyปัญหาสำหรับผมก็คือผมได้หายไปคีย์ส่วนตัวใน ฉันคัดลอกคีย์ส่วนตัวจากตำแหน่งสัมพัทธ์เดียวกันจากกล่องเดิมและ Viola!


ฉันจะเพิ่มว่าในฐานะนักพัฒนาที่ดีเรากำลังตรวจสอบ.vagrantไฟล์เป็น git ... และเช่นนี้git checkoutไฟล์ที่กล่าวถึงอย่างรวดเร็วจะช่วยประหยัดวัน!
Ian Vaughan

8

ฉันได้พบวิธียุ่งเหยิงกับคีย์ใน Win 8.2 ซึ่งฉันไม่ประสบความสำเร็จกับวิธีการใด ๆ อาจเป็นเรื่องที่น่าสนใจที่การรวมกันของ VirtualBox, Vagrant และกล่องรันบน Win 7 Ultimate โดยไม่มีปัญหาใด ๆ

ฉันเปลี่ยนเป็นการตรวจสอบรหัสผ่านด้วยการเพิ่มคำสั่งต่อไปนี้ใน Vagrantfile:

config.ssh.password = "vagrant"
config.ssh.insert_key = false

โปรดทราบว่าฉันไม่แน่ใจว่านี่เป็นการเปลี่ยนแปลงที่จำเป็นเท่านั้นเพราะฉันได้ทำไปแล้ว:

  1. ฉันสร้างคู่คีย์ RSA ใหม่และเปลี่ยนไฟล์ authorized_keys ตามลำดับ (ทั้งหมดในเครื่องเสมือนดูคำแนะนำด้านบนและที่อื่น ๆ )

  2. ฉันคัดลอกคีย์ส่วนตัวไปยังไดเรกทอรีเดียวกันกับที่ Vagrantfile ตั้งอยู่และเพิ่ม

     config.ssh.private_key_path = "./id_rsa"
    

แต่ฉันเชื่อว่าการเปลี่ยนแปลงเหล่านี้ไม่เกี่ยวข้อง ฉันใช้เวลาพยายามอย่างมากดังนั้นฉันจึงไม่เปลี่ยนการกำหนดค่าการทำงานด้วยเหตุผลที่ชัดเจน :)


5

ไม่สามารถวิ่งคนเร่ร่อนขึ้นเพราะมันติดและหมดเวลา?

ฉันเพิ่งมี "น้ำในแล็ปท็อปเหตุการณ์" และต้องโยกย้ายไปยังใหม่ (บน MAC โดยวิธี)

ฉันทำให้โครงการทั้งหมดของฉันสำเร็จและทำงานข้างโครงการซึ่งกำลังใช้คนจรจัด

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 8000 (guest) => 8877 (host) (adapter 1)
    default: 8001 (guest) => 8878 (host) (adapter 1)
    default: 8080 (guest) => 7777 (host) (adapter 1)
    default: 5432 (guest) => 2345 (host) (adapter 1)
    default: 5000 (guest) => 8855 (host) (adapter 1)
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Authentication failure. Retrying...
    default: Warning: Authentication failure. Retrying...
    default: Warning: Authentication failure. Retrying...

ไม่สามารถรับรองความถูกต้องลองอีกครั้งและอีกครั้งและในที่สุดก็ยอมแพ้

** นี่คือวิธีที่ฉันได้รูปร่างมาใน 3 ขั้นตอน: **

1 - ค้นหา IdentityFile ที่ใช้โดยคนจรจัด: $ vagrant ssh-config

Host default
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /Users/ned/.vagrant.d/insecure_private_key
  IdentitiesOnly yes
  LogLevel FATAL

2 - ตรวจสอบกุญแจสาธารณะใน IdentityFile: $ ssh-keygen -y -f /Users/<user-name>/.vagrant.d/insecure_private_key แทนที่'<user-name>'ด้วยผู้ใช้ของคุณ มันจะมีลักษณะดังนี้:

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAA...9gE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ==

3 - เข้าสู่ระบบไปยังเครื่องคนจรจัดด้วยรหัสผ่าน "คนจรจัด": $ ssh -p 2222 -o UserKnownHostsFile=/dev/null vagrant@127.0.0.1

The authenticity of host '[127.0.0.1]:2222 ([127.0.0.1]:2222)' can't be established.
RSA key fingerprint is dc:48:73:c3:18:e4:9d:34:a2:7d:4b:20:6a:e7:3d:3e.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[127.0.0.1]:2222' (RSA) to the list of known hosts.
vagrant@127.0.0.1's password: vagrant
Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-31-generic x86_64)
...

4 - เพิ่มกุญแจสาธารณะไปยังไฟล์ authorized_keys $echo "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAA...9gE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ==" > /home/vagrant/.ssh/authorized_keys ssh-rsa

5 - ออกจาก (crtl + d) และหยุดภาชนะคนจรจัดแล้วนำกลับขึ้น $ vagrant halt $vagrant up

หวังว่าคุณจะมีแขนในอากาศตอนนี้ ...

ฉันได้สิ่งนี้จากการแก้ไขเพียงเล็กน้อยจากบทความ Ned Batchelders - Ned คุณเป็นแชมป์ !!


คุณเป็นอัจฉริยะหรือ Ned Batchelders ไม่ว่าจะด้วยวิธีใดมันช่วยแก้ไขปัญหาของฉันได้!
Adsy2010

4

สำหรับฉันนี้ได้รับการแก้ไขโดยการเปลี่ยนการอนุญาตในโฟลเดอร์. ssh ใน directort บ้านคนจรจัด (เช่น "~ vagrant / .ssh") ฉันคิดว่าฉันได้รับอนุญาตเมื่อฉันตั้งค่าคีย์ ssh สำหรับแอปพลิเคชันของฉัน

ดูเหมือนว่าไฟล์ 'authorized_keys' จะต้องเป็น 'rw' สำหรับผู้ใช้ 'คนจรจัด' เท่านั้นดังนั้น "chmod 600 authorized_keys"; เดียวกันไปสำหรับไดเรกทอรีตัวเองและผู้ปกครอง:

ดังนั้น:

chmod 600 authorized_keys
chmod 700 .
chmod 700 ..

มันเป็นหลังจากที่ฉันได้รับอนุญาตทั้งหมดเหล่านี้คืนค่า ssh คนจรจัดเริ่มทำงานอีกครั้ง

ฉันคิดว่าเป็นเรื่องเกี่ยวกับความปลอดภัยของ ssh มันปฏิเสธที่จะรับรู้ใบรับรองหากพวกเขาสามารถเข้าถึงได้นอกเหนือจากผู้ใช้ปัจจุบันดังนั้นคนพเนจรพยายามที่จะเข้าสู่ระบบจึงถูกปฏิเสธ


บางครั้งฉันไม่สามารถเปลี่ยนแปลงได้เพียงรัน sudo chmod 600 authorized_keys แต่ก็ยังคงไม่เปลี่ยนแปลง ฉันคิดว่านี่มีบางอย่างที่ต้องทำและแชร์บน windows ด้วย
Darius.V

บางครั้งสิ่งนี้จะเกิดขึ้นหากไดเรกทอรีอยู่ในการแชร์เช่น/vagrant/...
robert

1
นอกจากคำตอบของฉันฉันต้องการลงคะแนนสำหรับคำตอบนี้ สำหรับเครื่องอื่นของฉันมันเป็นปัญหาตรงนี้ - เจ้าของผิดไดเรกทอรี /home/vagrant/.ssh มันเป็น "root: root" แต่ต้องเป็น "คนจรจัด: คนจรจัด"
Michael

4

หากคุณกำลังใช้การตั้งค่าเริ่มต้น SSH ใน VagrantFile ของคุณและเริ่มเห็นข้อผิดพลาดการตรวจสอบความถูกต้อง SSH หลังจากเชื่อมโยงกล่อง VM ของคุณอีกครั้งเนื่องจากความผิดพลาดลองเปลี่ยนรหัสสาธารณะในเครื่อง Vagrant ของคุณ

Vagrant แทนที่พับลิกคีย์ที่เชื่อมโยงกับคู่ของไพรเวตคีย์ที่ไม่ปลอดภัยในแต่ละการออกจากระบบเนื่องจากเหตุผลด้านความปลอดภัย หากคุณปิดเครื่องไม่ถูกต้องคู่คีย์สาธารณะ / ส่วนตัวอาจไม่ซิงค์ทำให้เกิดข้อผิดพลาดการตรวจสอบความถูกต้องของ SSH

เพื่อแก้ไขปัญหานี้เพียงแค่โหลดคีย์ส่วนตัวที่ไม่ปลอดภัยในปัจจุบันแล้วคัดลอกคู่คีย์สาธารณะลงในไฟล์ authorized_keys VM ของคุณ


3

นี่อาจเป็นคำตอบสุดท้ายในรายการ แต่สิ่งนี้ใช้ได้กับฉันและฉันไม่พบคำตอบนี้ทุกที่ฉันพบว่าตัวฉันเองหลังจากการวิจัย 2 วันดังนั้นคุณควรลองทำสิ่งนี้ถ้าไม่มีอะไรเหมาะกับคุณจนถึงตอนนี้

ในกรณีของฉันปัญหามาจาก VirtualBox ของฉัน ฉันไม่ทราบสาเหตุที่ปิดใช้งานตัวเลือกและควรเปิดใช้งาน

ป้อนคำอธิบายรูปภาพที่นี่

อย่างที่คุณเห็นในภาพมีปัญหาเครือข่ายกับ VirtualBox ของฉันและสิ่งที่ฉันต้องทำเพื่อแก้ไขปัญหานี้คือการเลือกเครื่องของฉันกดที่การตั้งค่าแท็บเครือข่ายและหลังจากนั้นให้แน่ใจว่าตัวเลือกสายเคเบิลที่เชื่อมต่อ ถูกเลือก ในกรณีของฉันไม่ได้เลือกตัวเลือกนี้และฉันล้มเหลวในขั้นตอนนี้:

default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key

ก่อนอื่นฉันคิดว่าพอร์ตนั้นถูกใช้งานไปแล้วหลังจากนั้นฉันติดตั้ง Vagrant อีกครั้งและฉันก็ลองทำอย่างอื่น แต่ก็ไม่มีใครทำงานให้ฉันได้


3

สิ่งนี้เกิดขึ้นกับฉันหลายครั้งและวิธีที่ฉันแก้ไขคือ:

  1. ตรวจสอบและตรวจสอบให้แน่ใจว่า Vagrantfile ของคุณมีเส้นทางคีย์ส่วนตัวที่ถูกต้อง:

    config.ssh.private_key_path = "/home/razvan/.ssh/id_rsa"

  2. ดำเนินการคำสั่ง vagrant ssh ใน linux terminal

  3. บนเครื่องคนเร่ร่อนของคุณไปที่

    cd /home/vagrant/.ssh

และตรวจสอบว่าคีย์ ssh ในไฟล์ authorized_keys เหมือนกับที่คุณมีในเครื่องของคุณใน ~ / .ssh / id_rsa.pub หากไม่ได้แทนที่หนึ่งจากคนจรจัดที่ได้รับอนุญาตของคุณคีย์กับคนในเครื่องท้องถิ่นของคุณพบใน ~ / .ssh / id_rsa.pub

  1. โหลดซ้ำอีกครั้ง:

    โหลดซ้ำอีกครั้ง

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


ฉันไม่มีโฟลเดอร์ ~ / .ssh แล้วฉันควรทำอย่างไร ??
Ashish Karpe

@AshishKarpe สร้างด้วยการอนุญาต 700 รายการและสร้างauthorized_keysไฟล์ที่มีสิทธิ์ 600 รายการภายใน
โฮแกน

3

1. ค้นหาคีย์ส่วนตัวในโฮสต์:

vagrant ssh-config
#

เอาท์พุท:

Host default
  ...
  Port 2222
  ...
  IdentityFile /home/me/.vagrant.d/[...]/virtualbox/vagrant_private_key
  ...

2. เก็บเส้นทางคีย์ส่วนตัวและหมายเลขพอร์ตในตัวแปร:

ใช้สองคำสั่งเหล่านี้กับผลลัพธ์จากด้านบน:

pk="/home/me/.vagrant.d/.../virtualbox/vagrant_private_key"
port=2222
#

3. สร้างรหัสสาธารณะและอัปโหลดไปยังเครื่องแขก:

คัดลอก / พาสต้าไม่ต้องมีการเปลี่ยนแปลง:

ssh-keygen -y -f $pk > authorized_keys
scp -P $port authorized_keys vagrant@localhost:~/.ssh/
vagrant ssh -c "chmod 600 ~/.ssh/authorized_keys"
rm authorized_keys
#

1
ฉันมีปัญหาที่อธิบายไว้หลายครั้งโดยปกติหลังจากบรรจุภัณฑ์และจากนั้นเรียกคืนกล่อง Vagrant สิ่งที่ทำงานกับฉันคือการเพิ่มการกำหนดค่าต่อไปนี้เพื่อสั่งให้ Vagrant ใส่กุญแจสาธารณะใน VM: config.ssh.username = "vagrant"; config.ssh.password = "vagrant"; config.ssh.insert_key = trueแต่คราวนี้การกำหนดค่าข้างต้นไม่ได้ทำอะไรเลย ฉันไม่รู้จริง ๆ ว่าทำไมพยายามที่จะแก้ปัญหาว่าทำไมคีย์ไม่ถูกแทรกโดยไม่มีโชค ดังนั้นฉันจึงเลือกวิธีแก้ปัญหาและ voila ของคุณ! มันได้ผล!
stz184

2

โซลูชัน Mac:

  1. เพิ่มรหัส ssh id_rsa ในระบบไปยังคีย์ส่วนตัวคนจรจัด

    vi /Users//.vagrant/machines/default/virtualbox/private_key

    /Users//.ssh/id_rsa

  2. คัดลอกพับลิกคีย์ /Users//.ssh/id_rsa.pub ในช่อง vagrant authorized_keys

ssh vagrant@localhost -p 2222 (รหัสผ่าน: คนจรจัด) ls -la cd .ssh

  1. chmod 0600 ~/.ssh/authorized_keys

  2. vagrant reload

แก้ไขปัญหาแล้ว

ขอบคุณที่


1

ยังไม่สามารถเกิน:

เริ่มต้น: วิธีการรับรองความถูกต้อง SSH: กุญแจส่วนตัว

เมื่อฉันใช้ VirtualBox GUI มันบอกว่ามีตัวประมวลผลระบบปฏิบัติการไม่ตรงกัน

เพื่อให้คนจรจัดเดินหน้าต่อไปได้อีกในการตั้งค่า BIOS ฉันต้องตอบโต้โดยอัตโนมัติ:

ปิดใช้งาน: การจำลองเสมือน

เปิดใช้งาน: VT-X

ลองสลับการตั้งค่าเหล่านี้ใน BIOS ของคุณ


1

ก่อนอื่นคุณควรลบไฟล์ insecure_private_key ที่สร้างอัตโนมัติแล้วสร้างไฟล์นี้ใหม่โดยพิมพ์

vagrant ssh-config

แล้วก็

vagrant halt
vagrant up

มันควรจะทำงาน


ฉันพยายาม แต่ยังคงได้รับข้อผิดพลาดเป็นเพราะฉันใช้ Ubuntu Virtual Box VM ข้างในที่ฉันพยายามคนจรจัด?
Ashish Karpe

#vagrant up การนำเครื่อง 'ค่าเริ่มต้น' ขึ้นกับผู้ให้บริการ 'virtualbox' ... ==> ค่าเริ่มต้น: การล้างพอร์ตที่ส่งต่อที่ตั้งไว้ก่อนหน้านี้ ... ==> ค่าเริ่มต้น: การล้างอินเตอร์เฟสเครือข่ายที่ตั้งไว้ก่อนหน้านี้ ... ==> ค่าเริ่มต้น: กำลังเตรียมอินเตอร์เฟสเครือข่ายตามการกำหนดค่า ... ค่าเริ่มต้น: อะแดปเตอร์ 1: nat ==> ค่าเริ่มต้น: การส่งต่อพอร์ต ... ค่าเริ่มต้น: 22 (แขก) => 2222 (โฮสต์) (อะแดปเตอร์ 1) ==> ค่าเริ่มต้น: บูต VM .. . ==> default: กำลังรอให้เครื่องบู๊ต สิ่งนี้อาจใช้เวลาสักครู่ ... ค่าเริ่มต้น: ที่อยู่ SSH: 127.0.0.1:2222 ค่าเริ่มต้น: ชื่อผู้ใช้ SSH: ค่าเริ่มต้นคนจรจัด: วิธีการรับรองความถูกต้อง SSH: รหัสส่วนตัว
Ashish Karpe

1

ฉันแก้ไขปัญหาด้วยวิธีต่อไปนี้ 1. สร้างคีย์ SSH ใหม่โดยใช้ Git Bash

$ ssh-keygen -t rsa -b 4096 -C "vagrant@localhost"
# Creates a new ssh key, using the provided email as a label
Generating public/private rsa key pair.
  1. เมื่อคุณได้รับแจ้งให้ "ป้อนไฟล์ที่จะบันทึกคีย์" กด Enter สิ่งนี้ยอมรับตำแหน่งไฟล์เริ่มต้น

    ป้อนไฟล์ที่จะบันทึกคีย์ (/ ผู้ใช้ / คีย์เวิร์ด /.ssh/id_rsa): [กด Enter]

  2. ที่พรอมต์พิมพ์ passphrase ที่ปลอดภัย คุณสามารถเว้นว่างไว้และกด Enter หากคุณไม่ต้องการข้อความรหัสผ่าน

    ป้อนไฟล์ที่จะบันทึกคีย์ (/ ผู้ใช้ / คีย์เวิร์ด /.ssh/id_rsa): [กด Enter]

  3. หากต้องการเชื่อมต่อกับ Vagrant VM ของคุณให้พิมพ์คำสั่งต่อไปนี้

    ssh vagrant @ localhost -p 2222

เมื่อคุณได้รับข้อความต่อไปนี้พิมพ์“ ใช่” และกด Enter

The authenticity of host 'github.com (192.30.252.1)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)?
  1. ตอนนี้เพื่อสร้างประเภทการเชื่อมต่อ SSH: $ vagrant ssh

  2. คัดลอกกุญแจสาธารณะของโฮสต์ไปยังไฟล์ authorized_keys ใน Vagrant VM สำหรับสิ่งนั้นไปที่โฟลเดอร์“ Users / [you] /. ssh” และคัดลอกเนื้อหาในไฟล์ id_rsa.pub ในเครื่องโฮสต์และผ่านไปยังไฟล์“ ~ / .ssh / authorized_keys” ใน Vagrant VM

  3. เปลี่ยนการอนุญาตในโฟลเดอร์ SSH และไฟล์ authorized_keys ใน Vagrant VM
  4. รีสตาร์ทคนจรจัดด้วย: $ vagrant reload

0

ฉันเริ่มเครื่องแล้ว:

vagrant ssh-config

ฉันได้รับสิ่งต่อไปนี้:

Host default HostName 127.0.0.1 User vagrant Port 2222 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile /Users/my-user-name/Documents/PHP-Projects/my-php-project/puphpet/files/dot/ssh/id_rsa IdentityFile /Users/my-user-name/.vagrant.d/insecure_private_key IdentitiesOnly yes LogLevel FATAL

จากนั้นฉันก็วิ่ง

cat ~/.ssh/id_rsa > /Users/my-user-name/Documents/PHP-Projects/my-php-project/puphpet/files/dot/ssh/id_rsa

เครื่องบูตจากที่นี่ใน

  • El Capitan 10.11.1 Beta (15B38b)
  • กล่องเสมือน 5.0.8 r103449
  • คนพเนจร 1.7.4

0

ระหว่างคำตอบทั้งหมดที่นี่มีสิ่งดี ๆ ให้ลอง เพื่อความสมบูรณ์ถ้าคุณ

ssh vagrant@localhost -p 2222

เป็น @Bizmate แนะนำและมันล้มเหลวให้แน่ใจว่าคุณมี

AllowUsers vagrant

ในเครื่อง/etc/ssh/sshd_configแขก / เครื่องคนเร่ร่อนของคุณ


0

ฉันใช้ Vagrant กับการตั้งค่า Puphpet ตั้งแต่เดือนพฤษภาคม 2558 และมีปัญหานี้ ดูเหมือนว่าการกำหนดค่าที่สร้างขึ้นไม่ได้จัดการกับพฤติกรรมของ Vagrant 1.7.4 (หรืออาจจะเร็วกว่านี้หรือไม่?) ในการสร้างคีย์ ssh ใหม่หากตรวจพบคีย์ที่ไม่ปลอดภัย

ฉันแก้ไขได้โดยการเพิ่มสิ่งต่อไปนี้ใน Puphpet ของฉันสร้าง Vagrantfile (การตั้งค่าท้องถิ่น) ในส่วน "if File.file? (customKey)"

config.ssh.insert_key = false

การอ้างอิงอ้างอิง


0

นี่เป็นขั้นตอนที่ถูกต้องทั้งหมดที่ฉันติดตามเพื่อแก้ไขปัญหาร้องนี้เกิดขึ้นเมื่อรันคำสั่งคนพเนจร

เหล่านี้คือขั้นตอนที่ฉันทำตาม

  1. สร้างโฟลเดอร์ เช่น F: \ projects
  2. เปิดโฟลเดอร์นี้ใน git bash แล้วเรียกใช้คำสั่งนี้ ssh-keygen -t rsa -b 4096 -C "your_email@example.com" (ใส่ที่อยู่อีเมลที่ถูกต้อง)
  3. จากนั้นสร้างคู่คีย์ในสองไฟล์แยกกันในโฟลเดอร์โครงการ เช่นโครงการ (ไฟล์กุญแจส่วนตัว), project.pub (ไฟล์กุญแจสาธารณะ)
  4. ไปที่ตำแหน่งนี้ C: \ Users \ acer.vagrant.d และค้นหาไฟล์ insecure_private_key
  5. รับไฟล์สำรองและคัดลอกเนื้อหาของคีย์ส่วนตัวที่สร้างขึ้นใหม่และวางในไฟล์ insecure_private_key จากนั้นคัดลอก insecure_private_key แล้ววางลงในตำแหน่งนี้ด้วย
  6. ตอนนี้คนพเนจรขึ้นในสถานที่โครงการของคุณ หลังจากสร้างปัญหาดังกล่าวข้างต้นประเภท SSH คนจรจัดและเข้าไปข้างในให้ชื่อผู้ใช้รหัสผ่าน (ในชื่อผู้ใช้และรหัสผ่านเริ่มต้นถูกตั้งค่าเป็นคนจรจัด)
  7. เข้าไปที่ตำแหน่งนี้ cd /home/vagrant/.ssh และพิมพ์ mv authorized_keys authorized_keys_bk
  8. จากนั้นพิมพ์ ls -al และ type vi authorized_keys เพื่อเปิดไฟล์ editor_keys เปิด vi
  9. เปิดพับลิกคีย์ที่สร้างขึ้นจาก notepad ++ (project.pub) และคัดลอกเนื้อหาจากนั้นกด i บน git bash เพื่อเปิดใช้งานโหมดแทรกในเครื่องมือแก้ไข vi และคลิกขวาและวาง หลังจากกดปุ่ม Escape เพื่อออกจากโหมดแทรก
  10. : WQ! สำหรับบันทึกไฟล์และพิมพ์ ls -al
  11. จากนั้นสิทธิ์จะถูกตั้งค่าอย่างร้องไม่จำเป็นต้องเปลี่ยน drwx ------ 2 คนจรจัดคนจรจัด 4096 ก.พ. 13 15:33 drwx ------ 4 คนจรจัดคนจรจัด 4096 ก.พ. 13 14:04 .. -rw ------- 1 คนจรจัดคนจรจัด 743 ก.พ. 13 14:26 ที่ได้รับอนุญาต -rw ------- 1 รูทราก 409 ก.พ. 13 13:57 authorized_keys_bk -rw ------- 1 คนจรจัดคนจรจัด 409 ม.ค. 2 เวลา 23:09 น. _ ผู้มีอำนาจ _keys_originial มิฉะนั้นพิมพ์ chmod 600 ที่ได้รับอนุญาต
  12. ในที่สุดก็หยุดคนจรจัดและคนจรจัดขึ้นอีกครั้ง

************************ นี่คืองานที่ดีสำหรับฉัน ********************** ***********


0

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

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

sudo chown -R vagrant:vagrant /home/vagrant

จากนั้นคุณควรจะสามารถเข้าสู่ระบบอีกครั้งโดยไม่ต้องป้อนรหัสผ่าน

TL; DR: การอนุญาตในโฟลเดอร์คนจรจัดของคุณผิด


0

ง่าย:

homestead destroy
homestead up

แก้ไข (ไม่ง่ายอย่างที่คิดไว้ก่อน):

ปัญหาคือการใช้ที่อยู่อาศัยเวอร์ชันใหม่php7.0และสิ่งอื่น ๆ เพื่อหลีกเลี่ยงปัญหานี้ให้แน่ใจว่าคุณตั้งค่าverisonในHomestead.yml:

version: "0"

0

ฉันแก้ไขปัญหานี้โดยใช้คำสั่งใน windows 7 CMD ตามที่กำหนดในที่นี่คือลิงค์โพสต์ล่าสุดในหัวข้อนี้

https://github.com/mitchellh/vagrant/issues/6744

Some commands that will reinitialize various network states:
Reset WINSOCK entries to installation defaults : netsh winsock reset catalog
Reset TCP/IP stack to installation defaults : netsh int ip reset reset.log
Flush DNS resolver cache : ipconfig /flushdns
Renew DNS client registration and refresh DHCP leases : ipconfig /registerdns
Flush routing table : route /f

0

รับหัวของฉันเกี่ยวกับเรื่องนี้ในสองสามวันสุดท้ายในกล่องฐาน repackaged (Mac OS X, El Capitan)

ทำตามขั้นตอนของ @Radek ฉันทำ 'คนจรจัด ssh-config' บนกล่องซอร์สและได้รับ:

...
/Users/Shared/dev/<source-box-name>/.vagrant/machines/default/virtualbox/private_key
...

ในสำเนาใหม่คำสั่งนั้นให้ฉัน:

...
IdentityFile /Users/<username>/.vagrant.d/insecure_private_key
...

ดังนั้นฉันเพิ่งเพิ่มบรรทัดนี้ในสำเนาใหม่:

...
config.ssh.private_key_path = "/Users/Shared/dev/<source-box-name>/.vagrant/machines/default/virtualbox/private_key"
...

ไม่สมบูรณ์แบบ แต่ฉันสามารถขึ้นกับชีวิตของฉัน


0

อีกวิธีง่ายๆใน Windows ให้ไปที่ไฟล์ Homestead / Vagrantfile และเพิ่มบรรทัดเหล่านี้เพื่อเชื่อมต่อกับชื่อผู้ใช้ / รหัสผ่านแทนรหัสส่วนตัว:

config.ssh.username = "vagrant"  
config.ssh.password = "vagrant"  
config.ssh.insert_key = false 

ดังนั้นในที่สุดส่วนหนึ่งของไฟล์จะเป็นดังนี้:

if File.exists? homesteadYamlPath then
    settings = YAML::load(File.read(homesteadYamlPath))
elsif File.exists? homesteadJsonPath then
    settings = JSON.parse(File.read(homesteadJsonPath))
end

config.ssh.username = "vagrant"  
config.ssh.password = "vagrant"  
config.ssh.insert_key = false 

Homestead.configure(config, settings)

if File.exists? afterScriptPath then
    config.vm.provision "shell", path: afterScriptPath, privileged: false
end

หวังว่าความช่วยเหลือนี้ ..


0

ฉันลองสิ่งนี้บนเครื่อง VM ของฉัน

เปลี่ยนสิทธิ์ / home / คนจรจัด (ทำ chmod 700 บนมัน)

ตอนนี้ฉันสามารถ ssh ลงในกล่องของฉันโดยตรง

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