首先,我为我的流浪盒设置了一个单独的ssh密钥。 我在〜/ .ssh / config
上进行了此设置Host vag_ubuntu14
HostName 127.0.0.1
Port 2222
User vagrant
IdentityFile ~/.ssh/vag_ubuntu14/id_rsa
我用这个命令将公钥复制到了流浪盒的〜/ .ssh / authorized_keys 。
cat ~/.ssh/vag_ubuntu14/id_rsa.pub | ssh -p2222 vagrant@127.0.0.1 'cat > ~/.ssh/authorized_keys'
因此,当ssh vag_ubuntu14
按预期运行时。
但是运行vagrant ssh
到ssh到流浪者盒子并不起作用。它会导致身份验证失败。
这是我当前的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
但是当我运行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
答案 0 :(得分:7)
对于遇到同样问题的人。我发现解决方案很简单。
您要在Vagrantfile上自定义私钥位置的配置。您必须先删除默认私钥。
您可以通过运行以下方式查看私钥的位置:
`vagrant ssh-config`
删除 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
如果您删除了预装在流浪盒上的私钥,则只需在Vagrantfile上指定新私钥的位置。
config.ssh.private_key_path = 'location of your private key'
要检查您的新私钥是否已被读取,请再次运行vagrant ssh-config
。