SSH 转发不适用于 vagrant
SSH forwarding does not work for vagrant
我按照描述设置了 Vagrant 1.8.1 的 ssh 参数 here
很快,我得到了主机 ssh 配置文件:
Host bitbucket.org
Hostname bitbucket.org
IdentityFile ~/.ssh/id_bitbucket
User zuba
ForwardAgent yes
在 Vagrantfile 中:
config.ssh.forward_agent = true
在主机上 ssh-add -L 显示密钥,而在 vagrant box 上它报告代理没有身份并且 git 由于身份验证失败克隆失败
如何解决这个问题?
更新 1:
vagrant ssh -c 'ssh-add -l'
显示密钥
> vagrant ssh-config
Host p4
HostName 127.0.0.1
User vagrant
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /home/zuba/.vagrant.d/insecure_private_key
IdentitiesOnly yes
LogLevel FATAL
ForwardAgent yes
更新 2:
找到重复的 post 没有答案 vagrant ssh agent forwarding only works for inline commands?
更新 3:
这是我的 Vagrantfile:
Vagrant.configure("2") do |config|
boxes = {
"p4" => "10.2.2.15",
}
boxes.each do |box_name, box_ip|
config.vm.define box_name do |config|
config.vm.box = "trusty-64"
config.vm.box_url = "https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box"
config.vm.hostname = "p4"
config.vm.network :private_network, ip: box_ip
config.vm.network "forwarded_port", guest: 3000, host: 3000
config.vm.network "forwarded_port", guest: 3001, host: 3001
config.vm.network "forwarded_port", guest: 3002, host: 3002
config.vm.network "forwarded_port", guest: 3003, host: 3003
config.vm.network "forwarded_port", guest: 6379, host: 6379 # Redis
config.vm.provider "virtualbox" do |vb|
vb.gui = false
vb.name = "p4"
# Use VBoxManage to customize the VM. For example to change memory:
vb.customize ["modifyvm", :id, "--memory", "1024"]
end
config.vm.synced_folder "../..", "/home/vagrant/my_src"
config.ssh.forward_agent = true # to use host keys added to agent
# provisioning
config.vm.provision :shell, :inline => "sudo apt-get update"
config.vm.provision "chef_solo" do |chef|
chef.log_level = "info"
chef.environment = "development"
chef.environments_path = "environments"
chef.cookbooks_path = ["cookbooks", "site-cookbooks"]
chef.roles_path = "roles"
chef.data_bags_path = "data_bags"
chef.json.merge!(JSON.parse(IO.read("nodes/#{box_ip}.json")))
end
config.exec.commands '*', directory: '/home/vagrant'
config.exec.commands 'apt-get', prepend: 'sudo'
config.exec.commands %w[rails rspec rake], prepend: 'bundle exec'
end
end
end
最后我找到了 that post 这帮助我弄清楚是什么阻止了 vagrant 使用代理密钥。
我在一个 GNU 屏幕会话 中 ssh-add
按键,而在另一个屏幕会话中执行 vagrant ssh
。这就是为什么 ssh-agent 对流浪者有点 'inaccessible' 的原因。
当我在同一个屏幕会话中添加密钥和 ssh-ed vagrat 时,一切都开始工作
我按照描述设置了 Vagrant 1.8.1 的 ssh 参数 here
很快,我得到了主机 ssh 配置文件:
Host bitbucket.org
Hostname bitbucket.org
IdentityFile ~/.ssh/id_bitbucket
User zuba
ForwardAgent yes
在 Vagrantfile 中:
config.ssh.forward_agent = true
在主机上 ssh-add -L 显示密钥,而在 vagrant box 上它报告代理没有身份并且 git 由于身份验证失败克隆失败
如何解决这个问题?
更新 1:
vagrant ssh -c 'ssh-add -l'
显示密钥
> vagrant ssh-config
Host p4
HostName 127.0.0.1
User vagrant
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /home/zuba/.vagrant.d/insecure_private_key
IdentitiesOnly yes
LogLevel FATAL
ForwardAgent yes
更新 2:
找到重复的 post 没有答案 vagrant ssh agent forwarding only works for inline commands?
更新 3:
这是我的 Vagrantfile:
Vagrant.configure("2") do |config|
boxes = {
"p4" => "10.2.2.15",
}
boxes.each do |box_name, box_ip|
config.vm.define box_name do |config|
config.vm.box = "trusty-64"
config.vm.box_url = "https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box"
config.vm.hostname = "p4"
config.vm.network :private_network, ip: box_ip
config.vm.network "forwarded_port", guest: 3000, host: 3000
config.vm.network "forwarded_port", guest: 3001, host: 3001
config.vm.network "forwarded_port", guest: 3002, host: 3002
config.vm.network "forwarded_port", guest: 3003, host: 3003
config.vm.network "forwarded_port", guest: 6379, host: 6379 # Redis
config.vm.provider "virtualbox" do |vb|
vb.gui = false
vb.name = "p4"
# Use VBoxManage to customize the VM. For example to change memory:
vb.customize ["modifyvm", :id, "--memory", "1024"]
end
config.vm.synced_folder "../..", "/home/vagrant/my_src"
config.ssh.forward_agent = true # to use host keys added to agent
# provisioning
config.vm.provision :shell, :inline => "sudo apt-get update"
config.vm.provision "chef_solo" do |chef|
chef.log_level = "info"
chef.environment = "development"
chef.environments_path = "environments"
chef.cookbooks_path = ["cookbooks", "site-cookbooks"]
chef.roles_path = "roles"
chef.data_bags_path = "data_bags"
chef.json.merge!(JSON.parse(IO.read("nodes/#{box_ip}.json")))
end
config.exec.commands '*', directory: '/home/vagrant'
config.exec.commands 'apt-get', prepend: 'sudo'
config.exec.commands %w[rails rspec rake], prepend: 'bundle exec'
end
end
end
最后我找到了 that post 这帮助我弄清楚是什么阻止了 vagrant 使用代理密钥。
我在一个 GNU 屏幕会话 中 ssh-add
按键,而在另一个屏幕会话中执行 vagrant ssh
。这就是为什么 ssh-agent 对流浪者有点 'inaccessible' 的原因。
当我在同一个屏幕会话中添加密钥和 ssh-ed vagrat 时,一切都开始工作