首页 文章

Vagrant ssh身份验证失败

提问于
浏览
131

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...

我可以 Ctrl+C 退出身份验证循环,然后手动成功ssh .

我在访客框上执行了以下步骤:

  • 已启用 Remote Login for All Users .

  • 使用 0700 权限创建了 ~/.ssh 目录 .

  • 使用 0600 权限创建了 ~/.ssh/authorized_keys 文件 .

  • this public key粘贴到 ~/.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" .

我也尝试在Vagrantfile中设置 config.ssh.password . 这确实输出了 SSH auth method: password 但仍未进行身份验证 .

我也尝试重建盒子并重新检查以上所有内容 .

它看起来像others have had success with this configuration,所以必定有一些我做错了 .

found this thread并启用了GUI,但这没有帮助 .

27 回答

  • 2

    我从2015年5月起使用Vagrant和Puphpet设置并遇到了这个问题 . 似乎生成的配置没有处理Vagrant 1.7.4(或者可能稍早一点?)的行为,如果它检测到不安全的密钥,则重新生成ssh密钥 .

    我通过在“if File.file?(customKey)”子句中的Puphpet生成的Vagrantfile(本地设置)中添加以下内容来解决它:

    config.ssh.insert_key = false
    

    Reference commit

  • 40

    确保您的第一个网络接口是NAT . 当您构建盒子时,另一个第二个网络接口可以是您想要的任何东西 . 不要忘记Vagrant用户,如Google主题中所述 .

    祝好运 .

  • 78

    For general information: 默认为ssh-connect你可以简单地使用

    用户: vagrant 密码: vagrant

    https://www.vagrantup.com/docs/boxes/base.html#quot-vagrant-quot-user

    First, try: 查看您的机器配置中有什么vagrant insecure_private_key

    $ vagrant ssh-config
    

    例:

    $ 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
    

    http://docs.vagrantup.com/v2/cli/ssh_config.html

    Second, do: 使用个人系统私钥的内容更改文件 insecure_private_key 的内容

    Or use: 将其添加到Vagrantfile:

    Vagrant.configure("2") do |config|
      config.ssh.private_key_path = "~/.ssh/id_rsa"
      config.ssh.forward_agent = true
    end
    
    • config.ssh.private_key_path 是您的本地私钥

    • 您的私钥必须可供本地ssh-agent使用 . 你可以查看 ssh-add -L . 如果未列出,请使用 ssh-add ~/.ssh/id_rsa 添加

    • 不要忘记在Vagrant VM上将公钥添加到 ~/.ssh/authorized_keys . 你可以通过复制粘贴或使用像ssh-copy-id这样的工具(用户: root 密码: vagrant 端口:2222)来实现 ssh-copy-id '-p 2222 root@127.0.0.1'

    If still does not work try this:

    • c:\Users\USERNAME\.vagrant.d\insecure_private_key 删除 insecure_private_key 文件

    • 运行 vagrant up (vagrant将生成一个新的 insecure_private_key 文件)

    In other cases, it is helpful to just set forward_agent in Vagrantfile

    Vagrant::Config.run do |config|
       config.ssh.forward_agent = true
    end
    

    Useful:

    配置 git 可能与git-scm.com

    设置完成后,此程序和创建个人系统私钥将在您的 Profiles 路径中: c:\users\USERNAME\.ssh\id_rsa.pub

    PS: 最后 - 建议你看Ubuntu on Windows 10

  • 6

    以上都不适合我 . 不知怎的,盒子在vagrant用户authorised_keys文件中添加了错误的公钥 .

    如果你仍然可以使用流浪汉密码(密码是流浪汉)在盒子上ssh,即

    ssh vagrant@localhost -p 2222
    

    然后使用以下命令将公钥内容从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
    

    完成后退出VM并再次尝试vagrant ssh . 它现在应该工作 .

  • 1

    如果您在vagrant 1.8.5上遇到此问题,请在github上查看此主题:

    https://github.com/mitchellh/vagrant/issues/7610

    它主要是由权限问题引起的,解决方法就是

    vagrant ssh 
    password: vagrant 
    chmod 0600 ~/.ssh/authorized_keys
    exit
    

    然后

    vagrant reload
    

    仅供参考:此问题仅影响CentOS,Ubuntu工作正常 .

  • 0

    在来宾计算机/ 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
    

    然后做流浪汉停止 . 这将删除并重新生成您的私钥 .

    (这些步骤假设您已经创建或已经拥有主文件夹下的〜/ .ssh /和〜/ .ssh / authorized_keys目录 . )

  • 0

    根据我的经验,这对于新的流浪汉机器来说是一个令人惊讶的频繁问题 . 到目前为止,最简单的解决方法是在客户端上手动创建所需的ssh密钥,而不是更改配置本身,然后使用主机上的私钥 .

    • 登录流浪汉机器: vagrant ssh ,使用默认密码 vagrant .

    • 创建ssh键:例如, ssh-keygen -t rsa -b 4096 -C "vagrant"as adviced by GitHub's relevant guide) .

    • 重命名公钥文件(默认情况下为id_rsa.pub),覆盖旧公钥: mv .ssh/id_rsa.pub .ssh/authorized_keys .

    • 如果需要,重新加载ssh服务: sudo service ssh reload .

    • 将私钥文件(默认为id_rsa)复制到主机:例如,使用猫和剪贴板的精细组合,绘制和复制(必须存在更好的方法,发明一个!) .

    • 从流浪汉机器退出: logout .

    • 通过查看其配置来查找vagrant使用的当前私钥: vagrant ssh-config (查找实例ÌdentityFile"/[...]/private_key" .

    • 将当前私钥替换为您在主机上创建的私钥:例如, nano /[...]/private_key 并粘贴从剪贴板,如果一切都失败了 . ( Note ,但是,如果你的private_key不是项目特定的,但是由多个流浪汉机器共享,你最好自己配置路径,以免破坏其他完美工作的机器!更改路径就像在Vagrantfile中添加一行 config.ssh.private_key_path = "path/to/private_key" 一样简单 . )此外,如果您使用的是PuPHPet生成的机器,您可以将您的私钥存储到文件 puphpet/files/dot/ssh/id_rsa ,它将自动添加到Vagrantfile的ssh配置中 .

    • 测试设置: vagrant ssh 现在应该可以使用 .

    如果是这种情况,请祝贺自己,如果需要的话,运行 vagrant provision 并继续进行有意义的任务 .

    如果您仍然遇到问题,可以方便地将详细标志添加到ssh命令以简化调试 . 您可以在双击之后传递该(或任何其他选项) . 例如,键入 vagrant ssh -- -v . 您可以根据需要随意添加任意数量的v,每个都会为您提供更多信息 .

  • 1

    如果您尝试强制VM默认使用root用户进行SSH,也会发生这种情况....

    例如,Vagrantfile中的配置可能会导致此失败:

    config.ssh.username = 'root'
    config.ssh.password = 'vagrant'
    config.ssh.insert_key = 'true'
    

    解决方案:注释掉这些行,然后再试一次!

  • 0

    问题我在我配置的盒子上收到了ssh身份验证错误 . 原来工作正常 .

    对我来说问题是我错过了 .vagrant/machines/default/virtualbox/private_key 中的私钥 . 我从原始盒子和Viola的相同位置复制了私钥!

  • 0

    我已经找到了解决Win 8.2上的密钥问题的方法,其中我没有成功使用此处提到的任何方法 . 可能有趣的是,VirtualBox,Vagrant和Box的完全相同的组合在Win 7 Ultimate上运行没有任何问题 .

    我通过在Vagrantfile中添加以下命令切换到密码验证:

    config.ssh.password = "vagrant"
    config.ssh.insert_key = false
    

    请注意,我不确定这是否是唯一需要的更改,因为我已经做过:

    • 我生成了一个新的RSA密钥对并相应地更改了authorized_keys文件(所有在虚拟机中,请参阅上面和其他地方的建议)

    • 我将私钥复制到Vagrantfile所在和添加的同一目录

    config.ssh.private_key_path = "./id_rsa"
    

    但我相信这些变化无关紧要 . 我花了很多时间尝试,所以我没有改变工作配置明显的原因:)

  • 0

    对我来说,这是通过改变vagrant home directort中的.ssh文件夹的权限来解决的(即“~vagrant / .ssh”) . 当我为我的应用程序设置ssh密钥时,我想我搞砸了权限 .

    似乎'authorized_keys'文件必须仅为'vagrant'用户'rw',所以“chmod 600 authorized_keys”;目录本身及其父目录也是如此:

    所以:

    chmod 600 authorized_keys
    chmod 700 .
    chmod 700 ..
    

    只有在我恢复了所有这些权限之后,流浪汉ssh才开始重新运作 .

    我认为这与ssh安全性有关 . 它拒绝识别证书,如果它们在当前用户之外可以访问,那么流浪者尝试登录就会被拒绝 .

  • 4

    如果您在VagrantFile中使用默认SSH设置,并且在崩溃后重新关联VM框后开始看到SSH身份验证错误,请尝试更换流浪者计算机中的公钥 .

    由于安全原因,Vagrant在每次注销时替换与不安全私钥对相关联的公钥 . 如果未正确关闭计算机,公钥/私钥对可能会不同步,从而导致SSH身份验证错误 .

    要解决此问题,只需加载当前不安全的私钥,然后将公钥对复制到VM的authorized_keys文件中 .

  • 0

    这可能是列表中的最后一个答案,但这对我有用,我没有在任何地方找到这个答案,经过2天的研究后我发现它是我的自己所以你最好试试这个,如果到目前为止还没有其他工作 .

    在我的情况下,问题来自我的VirtualBox . 我不知道选项被禁用的原因是什么,应该已经启用了 .

    enter image description here

    正如您在图像中看到的那样,我的VirtualBox存在一些网络问题,为解决此问题我必须做的就是选择我的机器,按设置,网络选项卡,然后确保选项Cable Connected被选中了 . 在我的情况下,此选项未被选中,我在此步骤失败:

    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    

    首先我认为端口已经在使用,之后我重新安装了Vagrant,我也尝试了其他的东西,但没有一个工作为了我 .

  • 0

    这发生在我身上好几次,我解决它的方式是:

    • 检查并确保您的Vagrantfile具有正确的私钥路径:

    config.ssh.private_key_path =“/ home / razvan / .ssh / id_rsa”

    • 在linux终端中执行> vagrant ssh命令

    • 在你的流浪汉机器上去

    cd /home/vagrant/.ssh

    并检查authorized_keys文件中的ssh密钥是否与〜/ .ssh / id_rsa.pub中本地计算机上的ssh密钥相同 . 如果没有将 vagrant authorized_keys中的那个替换为〜/ .ssh / id_rsa.pub中找到的 local machine 上的那个 .

    • Reload Vagrant:

    流浪汉重装

    希望这有助于其他人 . 干杯!

  • 9

    1.在主机中找到私钥:

    vagrant ssh-config
    #
    

    输出:

    Host default
      ...
      Port 2222
      ...
      IdentityFile /home/me/.vagrant.d/[...]/virtualbox/vagrant_private_key
      ...
    

    2.将私钥路径和端口号存储在变量中:

    将这两个命令与上面的输出一起使用:

    pk="/home/me/.vagrant.d/.../virtualbox/vagrant_private_key"
    port=2222
    #
    

    3.生成公钥并将其上传到来宾计算机:

    复制/意大利面,无需更改:

    ssh-keygen -y -f $pk > authorized_keys
    scp -P $port authorized_keys vagrant@localhost:~/.ssh/
    vagrant ssh -c "chmod 600 ~/.ssh/authorized_keys"
    rm authorized_keys
    #
    
  • 2

    Mac解决方案:

    • 为流浪私钥添加了本地ssh id_rsa密钥

    vi /Users//.vagrant/machines/default/virtualbox/private_key

    /Users//.ssh/id_rsa

    • 在vagrant box authorized_keys上复制了公钥/Users//.ssh/id_rsa.pub

    ssh vagrant@localhost -p 2222 (密码:流浪汉) ls -la cd .ssh

    • chmod 0600 ~/.ssh/authorized_keys

    • vagrant reload

    问题解决了 .

    谢谢

  • 3

    也无法超越:

    默认值:SSH身份验证方法:私钥

    当我使用VirtualBox GUI时,它告诉我操作系统处理器不匹配 .

    为了让流浪者继续前进,在BIOS设置中我不得不反直觉地:

    禁用:虚拟化

    启用:VT-X

    尝试在BIOS中切换这些设置 .

  • 153

    首先,您应该删除自动生成的insecure_private_key文件,然后键入以重新生成此文件

    vagrant ssh-config
    

    然后

    vagrant halt
    vagrant up
    

    它应该工作

  • 3

    我以下面的方式解决了这个问题 . 1.使用Git Bash创建新的SSH密钥

    $ ssh-keygen -t rsa -b 4096 -C "vagrant@localhost"
    # Creates a new ssh key, using the provided email as a label
    Generating public/private rsa key pair.
    
    • 当系统提示您“输入要保存密钥的文件”时,按Enter键 . 这接受默认文件位置 .

    输入要保存密钥的文件(/Users/[you]/.ssh/id_rsa):[按Enter键]

    • 在提示符下,键入安全密码 . 如果您不需要密码短语,可以留空并按Enter键 .

    输入要保存密钥的文件(/Users/[you]/.ssh/id_rsa):[按Enter键]

    • 要连接到Vagrant VM类型,请执行以下命令

    ssh vagrant @ localhost -p 2222

    当您收到以下消息时,请键入“是”并按Enter键 .

    The authenticity of host 'github.com (192.30.252.1)' can't be established.
    RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
    Are you sure you want to continue connecting (yes/no)?
    
    • 现在 Build SSH连接类型:$ vagrant ssh

    • 将主机公钥复制到Vagrant VM中的authorized_keys文件中 . 为此,请转到“Users / [you] / . ssh”文件夹,并将主机中id_rsa.pub文件中的内容复制到Vagrant VM中的“〜/ .ssh / authorized_keys”文件中 .

    • 更改Vagrant VM中SSH文件夹和authorized_keys文件的权限

    • 重启流浪者:$ vagrant reload

  • 4

    我已启动机器,然后:

    vagrant ssh-config

    我得到了以下内容:

    Host default HostName 127.0.0.1 User vagrant Port 2222 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile /Users/my-user-name/Documents/PHP-Projects/my-php-project/puphpet/files/dot/ssh/id_rsa IdentityFile /Users/my-user-name/.vagrant.d/insecure_private_key IdentitiesOnly yes LogLevel FATAL

    然后我跑了

    cat ~/.ssh/id_rsa > /Users/my-user-name/Documents/PHP-Projects/my-php-project/puphpet/files/dot/ssh/id_rsa

    机器从这里启动

    • El Capitan 10.11.1 Beta(15B38b)

    • Virtual Box 5.0.8 r103449

    • Vagrant 1.7.4

  • 0

    在这里的所有回复中,有很多好东西可以尝试 . 为了完整,如果你

    ssh vagrant@localhost -p 2222

    正如@Bizmate建议的那样,它失败了,请确保你有

    AllowUsers vagrant

    在你的客人/流浪汉机器的 /etc/ssh/sshd_config .

  • 0

    当vagrant up命令运行时,我执行了修复此波纹管问题的所有正确步骤 .

    这些是我遵循的步骤

    • 创建一个文件夹 . 例如F:\ projects

    • 在git bash中打开此文件夹并运行此命令ssh-keygen -t rsa -b 4096 -C "your_email@example.com"(放置有效的电子邮件地址)

    • 然后在项目文件夹中的两个单独文件中生成密钥对 . 例如项目(私钥文件),project.pub(公钥文件)

    • 转到此位置C:\ Users \ acer.vagrant.d并找到文件insecure_private_key

    • 获取文件备份并复制新创建的私钥的内容,并将其粘贴到insecure_private_key文件中 . 然后复制insecure_private_key并将其粘贴到此位置 .

    • 现在在您的项目位置流浪 . 生成上述问题后输入vagrant ssh并进入内部给出用户名,密码 . (默认用户名和密码设置为vagrant)

    • 进入此位置cd /home/vagrant/.ssh并键入mv authorized_keys authorized_keys_bk

    • 然后键入ls -al并键入vi authorized_keys以打开authorized_keys文件vi编辑器 .

    • 从记事本(project.pub)打开生成的公钥并复制内容然后在git bash上按i以在vi编辑器上启用插入模式并右键单击并粘贴 . 按下退出后退出插入模式

    • :wq!保存文件并输入ls -al

    • 然后设置权限,如下所示,无需更改drwx ------ . 2 vagrant vagrant 4096 Feb 13 15:33 . drwx ------ . 4 vagrant vagrant 4096 Feb 13 14:04 .. -rw ------- . 1 vagrant vagrant 743 Feb 13 14:26 authorized_keys -rw ------- . 1 root root 409 Feb 13 13:57 authorized_keys_bk -rw ------- . 1 vagrant vagrant 409 Jan 2 23:09 authorized_keys_originial否则输入chmod 600 authorized_keys并输入此命令too chown vagrant:vagrant authorized_keys

    • 最后再次将流浪汉停止并流浪 .

    ****这对我来说很精致 ***********

  • 48

    只是对那些像我这样白痴的人,或者他们的流浪汉机器发生了一些奇怪的事情 . 当您更改了vagrant用户的主目录(故意或偶然)的权限时,也会发生此错误 .

    您可以使用密码('vagrant')登录(如其他帖子中所述),然后运行以下命令来修复权限 .

    sudo chown -R vagrant:vagrant /home/vagrant

    然后,您应该能够在不输入密码的情况下再次登录 .

    TL;DR: The permissions on your vagrant home folder are wrong.

  • 3

    简单:

    homestead destroy
    homestead up
    

    编辑(不像初个想法那么简单):

    问题是宅基地的新版本使用 php7.0 和其他一些东西 . 为避免这种混乱,请确保在 Homestead.yml 中设置 verison

    version: "0"
    
  • 8

    我通过在Windows 7 CMD上运行命令解决了这个问题,如下所示这是此线程上的最后一篇帖子,

    https://github.com/mitchellh/vagrant/issues/6744

    Some commands that will reinitialize various network states:
    Reset WINSOCK entries to installation defaults : netsh winsock reset catalog
    Reset TCP/IP stack to installation defaults : netsh int ip reset reset.log
    Flush DNS resolver cache : ipconfig /flushdns
    Renew DNS client registration and refresh DHCP leases : ipconfig /registerdns
    Flush routing table : route /f
    
  • 15

    在重新包装的基盒上,最近几天一直在打我的脑袋 . (Mac OS X,El Capitan)

    按照@Radek的程序,我在源盒上做了'vagrant ssh-config',得到了:

    ...
    /Users/Shared/dev/<source-box-name>/.vagrant/machines/default/virtualbox/private_key
    ...
    

    在新副本上,该命令给了我:

    ...
    IdentityFile /Users/<username>/.vagrant.d/insecure_private_key
    ...
    

    所以,我刚刚在新副本中添加了这一行:

    ...
    config.ssh.private_key_path = "/Users/Shared/dev/<source-box-name>/.vagrant/machines/default/virtualbox/private_key"
    ...
    

    不完美,但我可以继续我的生活 .

  • 1

    另一个简单的解决方案,在Windows中,转到Homestead / Vagrantfile文件并添加这些行以连接用户名/密码而不是私钥:

    config.ssh.username = "vagrant"  
    config.ssh.password = "vagrant"  
    config.ssh.insert_key = false
    

    所以,最后文件的一部分将如下所示:

    if File.exists? homesteadYamlPath then
        settings = YAML::load(File.read(homesteadYamlPath))
    elsif File.exists? homesteadJsonPath then
        settings = JSON.parse(File.read(homesteadJsonPath))
    end
    
    config.ssh.username = "vagrant"  
    config.ssh.password = "vagrant"  
    config.ssh.insert_key = false 
    
    Homestead.configure(config, settings)
    
    if File.exists? afterScriptPath then
        config.vm.provision "shell", path: afterScriptPath, privileged: false
    end
    

    希望这有帮助..

相关问题