为了使Fabric架构脚本适应本地Vagrant VM,我试图说服VM让我在不使用vagrant ssh
的情况下通过它进行SSH。我一直都有错误。
我尝试了很多不同的设置组合,但这里是最新的Vagrant文件:
Vagrant.configure(2) do |config|
config.vm.provider "virtualbox" do |v|
v.memory = 6144
v.cpus = 2
v.name = "mb_vagrant"
end
config.vm.box = "ubuntu/trusty64"
config.vm.network :private_network, ip: "192.168.33.10"
config.ssh.forward_agent = true
config.vm.provision :shell, path: "bootstrap.sh"
config.vm.network :forwarded_port, host: 8001, guest: 8001
end
vagrant ssh-config
告诉我:
Host default
HostName 127.0.0.1
User vagrant
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /Users/sloan/code/vagrant/.vagrant/machines/default/virtualbox/private_key
IdentitiesOnly yes
LogLevel FATAL
ForwardAgent yes
如果我尝试使用密钥文件和我设置的IP进行SSH连接,则会拒绝连接:
> ssh -i /Users/sloan/code/vagrant/.vagrant/machines/default/virtualbox/private_key -p 2222 vagrant@192.168.33.10
ssh: connect to host 192.168.33.10 port 2222: Connection refused
如果我使用vagrant@127.0.0.1
代替vagrant@192.168.33.10
尝试相同的操作,则会导致主机密钥验证失败。
我在这里缺少什么?
答案 0 :(得分:3)
主机密钥验证失败
这是 ssh 的一项安全功能,可以在发生攻击之前阻止中间人攻击。
您的计算机,上次进入该流浪盒时,存储了服务器签名的副本;当您现在连接时,很可能在重建之后,您正在连接到相同的物理地址,并且签名现在不匹配。
要清除过时的条目,您可以在客户端设备上的纯文本文件~/.ssh/known_hosts
(您尝试从中搜索的设备)中找到它们。
答案 1 :(得分:0)
使用 UserKnownHostsFile 选项优先于删除~/.ssh/known_hosts
文件以防止主机验证失败。我:
ssh -o UserKnownHostsFile=/dev/null -i <private-key-path> \
-p 2222 vagrant@127.0.0.1
如果您使用非托管服务,则删除known_hosts
可能是一个安全漏洞。外部服务器(远程,公共)。在你的本地虚拟机上做例外是有道理的,因为它完全由你完全控制。