【问题标题】:Running Chef recipes using Vagrant on Windows host: issue with SSH在 Windows 主机上使用 Vagrant 运行 Chef 食谱:SSH 问题
【发布时间】:2013-01-25 17:12:59
【问题描述】:

我使用 Vagrant 在 Windows 主机上创建了一个 CentOS VM 并连接到它,到目前为止一切顺利。

接下来我想使用 Chef 在创建的 VM 上配置堆栈。我尝试使用本地目录食谱以及提供食谱的 url,但这可能会失败,因为它无法 ssh 到访客框,从错误中可以看出:

SSH authentication failed! This is typically caused by the public/private keypair for the SSH user not being properly set on the guest VM. Please verify that the guest VM is setup with the proper public key, and that the private key path for Vagrant is setup properly as well.

所以我的第一个问题是:

1) 我如何确保 SSH 在 Windows 主机中启动来宾操作系统的同一窗口中工作,以便所有脚本都能正常执行?

现在当我在 vagrantfile 的下面一行评论时

config.ssh.username = "root"

上面的错误消失了,但我得到了另一个错误:

The following SSH command responded with a non-zero exit status. Vagrant assumes that this means the command failed!

mount -t vboxsf -o uid=id -u vagrant,gid=id -g vagrant v-csr-2 /tmp/vagrant-chef-1/chef-solo-2/roles

这是因为用户 vagrant 在 box 上没有足够的访问权限,这是我的第二个问题:

2) 如何指示 Vagrant 以 sudo 或 su 访问权限运行所有命令?

【问题讨论】:

    标签: windows ssh chef-infra vagrant


    【解决方案1】:

    这是我设法让 SSH 工作的方法:

    安装 cygwin (http://www.cygwin.com/)

    在 cygwin 中设置 openssh

    添加 ~/.ssh/id_rsa_vagrant

    here下载

    修改~/.ssh/config

    主机本地主机 身份文件 ~/.ssh/id_rsa_vagrant

    修改ssh目录的权限

    chmod 600 ~/.ssh/*

    一切都应该正常。

    【讨论】:

    • 一次就够了,祝厨师好运,有点难以进入......
    【解决方案2】:

    我找到了一种使用批处理文件和 Windows 中相同的命令提示符窗口连接到 VM 的方法。

    以下是步骤:

    • 您需要在同一台机器上安装 putty。
    • 您需要在以下批处理脚本中配置 putty 可执行文件的路径
    • 使用批处理文件连接到您的盒子

    这是批处理文件:

    @echo 关闭 快速眼动 REM 这是 Windows 上“vagrant ssh”命令的替代品 REM(因为“vagrant ssh”实际上在 Windows 上不起作用)。 快速眼动 必须安装 REM PuTTY。如果没有安装在 REM "C:\Program Files (x86)\PuTTY" 然后设置 PUTTY_DIR 环境 REM 指向安装位置。 快速眼动 REM 与任何 vagrant 命令一样,这应该在目录中执行 包含 Vagrantfile 的 REM。 快速移动

    设置本地启用扩展

    如果 "%PUTTY_DIR%" == "" ( REM 如果使用 Windows 安装程序,则 PuTTY 的默认位置。 设置“PUTTY_DIR=C:\Program Files (x86)\PuTTY” )

    如果不存在 "%PUTTY_DIR%" ( 回声错误:未找到腻子。 echo 安装 PuTTY 或检查 PUTTY_DIR 的设置。 转到结束 )

    for /F "tokens=1,2" %%A in ('vagrant ssh-config') 做 ( 如果 "%%A" == "主机名" ( 设置 VagrantHostName=%%B ) 如果 "%%A" == "端口" ( 设置 VagrantPort=%%B ) 如果 "%%A" == "用户" ( 设置 VagrantUser=%%B ) 如果 "%%A" == "IdentityFile" ( 设置 IdentityFile=%%B ) )

    如果 "%VagrantHostName%" == "" ( 转到结束 )

    如果存在 %IdentityFile%.ppk ( 设置“VGPUTTY_OPTIONS=%VGPUTTY_OPTIONS% -i %IdentityFile%.ppk” ) 别的 ( 回声。 echo 提示:对于无密码的 Vagrant VM 登录,使用 PuTTYGen 生成 回显此文件:%IdentityFile%.ppk 来自文件的回显:%IdentityFile% 回声。 )

    启动 "%VagrantHostName%:%VagrantPort%" "%PUTTY_DIR%\PuTTY.exe" %VGPUTTY_OPTIONS% %VagrantUser%@%VagrantHostName% %VagrantPort%

    :结束

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-25
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 2015-04-11
      相关资源
      最近更新 更多