ic3*_*3rg 141 ssh virtualbox vagrant vagrantfile private-key
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...
Run Code Online (Sandbox Code Playgroud)
我可以Ctrl+C退出身份验证循环,然后手动成功ssh.
我在访客框上执行了以下步骤:
启用Remote Login了All Users.
创建~/.ssh具有0700权限的目录.
创建~/.ssh/authorized_keys具有0600权限的文件.
将此公钥粘贴
到~/.ssh/authorized_keys
我也尝试使用私有(hostonly)网络而不是公共(桥接)网络,在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,但这没有用.
shi*_*ovk 163
一般信息:默认情况下,您可以使用ssh-connect
用户:vagrant密码:vagrant
https://www.vagrantup.com/docs/boxes/base.html#quot-vagrant-quot-user
首先,尝试:查看insecure_private_key机器配置中的流浪者
$ vagrant ssh-config
Run Code Online (Sandbox Code Playgroud)
例:
$ 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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
config.ssh.private_key_path 是您的本地私钥ssh-add -L.如果未列出,请添加ssh-add ~/.ssh/id_rsa~/.ssh/authorized_keysVagrant VM上.您可以通过复制粘贴或使用ssh-copy-id之类的工具(用户:root密码:vagrant端口:2222)来完成此操作ssh-copy-id '-p 2222 root@127.0.0.1'如果仍然不起作用试试这个:
insecure_private_key从中删除文件c:\Users\USERNAME\.vagrant.d\insecure_private_key
运行vagrant up(vagrant将生成一个新insecure_private_key文件)
在其他情况下,只需在 Vagrantfile以下位置设置forward_agent即可:
Vagrant::Config.run do |config|
config.ssh.forward_agent = true
end
Run Code Online (Sandbox Code Playgroud)
有用:
配置git可以使用git-scm.com
设置完成后,此程序和创建个人系统私钥将在您的个人资料路径中:c:\users\USERNAME\.ssh\id_rsa.pub
PS:最后 - 建议你在Windows 10上查看Ubuntu
Biz*_*ate 82
以上都不适合我.不知怎的,盒子在vagrant用户authorised_keys文件中添加了错误的公钥.
如果你仍然可以使用流浪汉密码(密码是流浪汉)在盒子上ssh,即
ssh vagrant@localhost -p 2222
Run Code Online (Sandbox Code Playgroud)
然后使用以下命令将公钥内容从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
Run Code Online (Sandbox Code Playgroud)
完成后退出VM并再次尝试vagrant ssh.它现在应该工作.
小智 48
如果您在vagrant 1.8.5上遇到此问题,请在github上查看此主题:
https://github.com/mitchellh/vagrant/issues/7610
它主要是由权限问题引起的,解决方法就是
vagrant ssh
password: vagrant
chmod 0600 ~/.ssh/authorized_keys
exit
Run Code Online (Sandbox Code Playgroud)
然后
vagrant reload
Run Code Online (Sandbox Code Playgroud)
仅供参考:此问题仅影响CentOS,Ubuntu工作正常.
Raj*_*ham 41
在来宾计算机/ 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
Run Code Online (Sandbox Code Playgroud)
然后做流浪汉停止.这将删除并重新生成您的私钥.
(这些步骤假设您已经创建或已经拥有主文件夹下的〜/ .ssh /和〜/ .ssh/authorized_keys目录.)
san*_*ari 20
根据我的经验,这对于新的流浪汉机器来说是一个令人惊讶的频繁问题.到目前为止,最简单的解决方法是在客户端上手动创建所需的ssh密钥,而不是更改配置本身,然后使用主机上的私钥.
vagrant ssh,使用默认密码vagrant.ssh-keygen -t rsa -b 4096 -C "vagrant"(由GitHub的相关指南建议).mv .ssh/id_rsa.pub .ssh/authorized_keys.sudo service ssh reload.cat .ssh/id_rsa,绘画和复制的精细组合(必须存在更好的方法,发明一个!).logout.vagrant ssh-config查找实例ÌdentityFile"/ [...] ./ pravate_key".nano /[...]/private_key,如果其他所有操作都失败,则从剪贴板粘贴.(但是,请注意,如果您的private_key不是特定于项目但由多个vagrant机器共享,则您最好自己配置路径,以免破坏其他完美正常工作的计算机!更改路径就像config.ssh.private_key_path = "path/to/private_key"在Vagrantfile中添加一行一样简单.)此外,如果您使用的是PuPHPet生成的机器,您可以将您的私钥存储到文件中puphpet/files/dot/ssh/id_rsa,它将自动添加到Vagrantfile的ssh配置中.vagrant ssh现在应该工作.如果是这种情况,请祝贺您自己,如果需要的话,继续logout运行vagrant provision并继续完成有意义的任务.
如果您仍然遇到问题,可以方便地将详细标志添加到ssh命令以简化调试.您可以在双击之后传递该(或任何其他选项).例如,输入vagrant ssh -- -v.您可以根据需要随意添加任意数量的v,每个都会为您提供更多信息.
小智 13
无法运行 vagrant,因为它卡住并超时?我最近发生了“笔记本电脑进水事件”,不得不迁移到新的(顺便说一下,在 MAC 上)。除了使用 vagrant 的项目之外,我成功地启动并运行了所有项目。
$ 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...
Run Code Online (Sandbox Code Playgroud)
它无法进行身份验证,一次又一次地重试并最终放弃。
这是我如何通过 3 个步骤恢复它的形状:
1 - 找到IdentityFileVagrant 使用的:
$ 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
Run Code Online (Sandbox Code Playgroud)
2 - 检查公钥IdentityFile:
$ ssh-keygen -y -f <path-to-insecure_private_key>
Run Code Online (Sandbox Code Playgroud)
它会输出如下内容:
ssh-rsa AAAAB3Nyc2EAAA...9gE98OHlnVYCzRdK8jlqm8hQ==
Run Code Online (Sandbox Code Playgroud)
3 - 使用密码登录 Vagrant 来宾vagrant:
ssh -p 2222 -o UserKnownHostsFile=/dev/null vagrant@127.0.0.1
Run Code Online (Sandbox Code Playgroud)
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)
...
Run Code Online (Sandbox Code Playgroud)
注意:如果流浪汉客人被配置为禁止密码验证您需要打开垂直框”界面,双击客人姓名,登录的vagrant/vagrant,然后sudo -s和编辑/etc/ssh/sshd_config,查找PasswordAuthentication no线路(通常是在文件的结尾),更换no用yes和重新启动ssh(即systemctl reload sshd或/etc/init.d/sshd restart)。
4 - 将公钥添加到/home/vagrant/authorized_keys文件中。
$ 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...
Run Code Online (Sandbox Code Playgroud)
5 - 退出 ( CTRL+ d) 并停止 Vagrant 来宾,然后将其重新启动。
重要的是,如果您使用任何配置工具(即 Ansible 等)在重新启动来宾之前禁用它,因为 Vagrant 会认为您的来宾由于使用不安全的私钥而未配置。它将重新安装密钥,然后运行您的配置程序!
$ 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
Run Code Online (Sandbox Code Playgroud)
希望你现在能举起双臂……
我从 Ned Batchelders 的文章中得到了这个,只是稍作修改- Ned 你是冠军!
Bra*_*rks 10
如果您尝试强制VM默认使用root用户进行SSH,也会发生这种情况....
例如,Vagrantfile中的配置可能会导致此失败:
config.ssh.username = 'root'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'
Run Code Online (Sandbox Code Playgroud)
解决方案:注释掉这些行,然后再试一次!
问题我在我配置的盒子上收到了ssh身份验证错误.原来工作正常.
对我来说问题是我错过了私钥.vagrant/machines/default/virtualbox/private_key.我从原始盒子和Viola的相同位置复制了私钥!
我已经找到了解决Win 8.2上的密钥问题的方法,其中我没有成功使用此处提到的任何方法.可能有趣的是,VirtualBox,Vagrant和Box的完全相同的组合在Win 7 Ultimate上运行没有任何问题.
我通过在Vagrantfile中添加以下命令切换到密码验证:
config.ssh.password = "vagrant"
config.ssh.insert_key = false
Run Code Online (Sandbox Code Playgroud)
请注意,我不确定这是否是唯一需要的更改,因为我已经做过:
我生成了一个新的RSA密钥对并相应地更改了authorized_keys文件(所有在虚拟机中,请参阅上面和其他地方的建议)
我将私钥复制到Vagrantfile所在和添加的同一目录
config.ssh.private_key_path = "./id_rsa"
Run Code Online (Sandbox Code Playgroud)但我相信这些变化无关紧要.我花了很多时间尝试,所以我没有改变工作配置明显的原因:)
对我来说,这是通过更改 vagrant 主目录中 .ssh 文件夹的权限解决的(即“~vagrant/.ssh”)。我想我在为我的应用程序设置 ssh 密钥时弄乱了权限。
似乎 'authorized_keys' 文件必须是 'rw' 仅适用于 'vagrant' 用户所以“chmod 600 authorized_keys”;目录本身及其父目录也是如此:
所以:
chmod 600 authorized_keys
chmod 700 .
chmod 700 ..
Run Code Online (Sandbox Code Playgroud)
只有在我恢复了所有这些权限之后,vagrant ssh 才开始再次工作。
我认为这与 ssh 安全性有关。如果证书可以通过当前用户之外的任何方式访问,它拒绝识别证书,因此拒绝流浪者尝试登录。