vagrant ssh无法按预期工作,它不符合我的自定义设置

the*_*777 3 ssh vagrant vagrantfile

首先,我为我的流浪盒设置了一个单独的ssh密钥.我在〜/ .ssh/config上进行了此设置

Host    vag_ubuntu14
HostName 127.0.0.1
Port    2222
User    vagrant
IdentityFile ~/.ssh/vag_ubuntu14/id_rsa
Run Code Online (Sandbox Code Playgroud)

然后我用这个命令将公钥复制到了流浪盒的〜/ .ssh/authorized_keys.

cat ~/.ssh/vag_ubuntu14/id_rsa.pub | ssh -p2222 vagrant@127.0.0.1 'cat > ~/.ssh/authorized_keys'
Run Code Online (Sandbox Code Playgroud)

所以当运行ssh vag_ubuntu14按预期工作时.但是跑到vagrant sshsv到流浪者的盒子是行不通的.它会导致身份验证失败

这是我当前的Vagrant文​​件,其中指定了私钥的路径.

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure(2) do |config|

  config.vm.box = "ubuntu14_04"

  config.vm.provider "virtualbox" do |vb|
    vb.name = "Ubuntu 14.04"
  end

  config.vm.provision :shell, path: "provision/bootstrap.sh"

  config.ssh.private_key_path = '/home/chris/.ssh/vag_ubuntu14/id_rsa'

end
Run Code Online (Sandbox Code Playgroud)

但是当我运行时vagrant ssh-config,它不尊重我在Vagrantfile上指定的私钥的自定义路径.

Host default
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /home/chris/ubuntu14_04/.vagrant/machines/default/virtualbox/private_key
  IdentitiesOnly yes
  LogLevel FATAL
Run Code Online (Sandbox Code Playgroud)

the*_*777 7

对于任何遇到同样问题的人.我发现解决方案非常简单.

为您的Vagrantfile上的私钥位置的自定义配置.您必须先删除默认私钥.

您可以通过运行以下命令查看私钥的位置:

`vagrant ssh-config`
Run Code Online (Sandbox Code Playgroud)

删除IdentityFile上指定的私钥.

Host default
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /home/chris/ubuntu14_04/.vagrant/machines/default/virtualbox/private_key
  IdentitiesOnly yes
  LogLevel FATAL
Run Code Online (Sandbox Code Playgroud)

当您删除预装在流浪盒上的私钥时,只需在Vagrantfile上指定新私钥的位置即可.

config.ssh.private_key_path = 'location of your private key'

要检查您的新私钥是否为已读取的私钥,请再次运行vagrant ssh-config.