Vagrant/Laravel Homestead SSH - 一段时间后无法输入/卡顿

3

这个问题的讨论线程很好地解释了我正在经历的问题,尽管它与单个cmd客户端无关: https://github.com/bliker/cmder/issues/347#issuecomment-111849036

这是针对Laravel Homestead实例的,我正在运行Homestead 2.1.6,目前拥有最新版本的Laravel/Homestead盒子、Vagrant和VirtualBox(为了解决Windows 10的另一个问题)。

基本上,当我使用"homestead ssh"进入虚拟机时,除非我正在积极地输入命令提示符,否则它会在大约30秒的不活动后超时。窗口保持打开但不再接受任何输入,除了上面链接中提到的退出序列。

这使得进行composer update几乎不可能(除非我随意输入字符以保持连接活动)。

我尝试过多个命令行客户端(windows cmd,git bash,cmder),多次安装了不同版本的VirtualBox和Vagrant,尝试使用独立的OpenSSH实例进行连接,并尝试了ServerAliveInterval建议,但我仍然遇到了这个问题。

在我的电脑上(也是Windows 8.1),一切正常,但在我的Windows 10笔记本电脑上,我无法使其正常工作。

有任何想法吗?

编辑:如我在下面的评论中提到的,我已经尝试在名为config的文件中使用ServerAliveInterval命令,分别位于~/.ssh/和cmder的配置目录中。这对于Windows系统来说正确吗?我可以检查是否正在使用此配置吗?

5个回答

2
这可能是SSH配置中ServerAliveInterval的普遍问题。我不使用Windows,所以不知道是否有ssh_config文件。如果您找到了它,请设置以下内容: ServerAliveInterval 10 此外,我启用了以下设置: ForwardAgent yes

我提到过我尝试了ServerAliveInterval但没有用。我在“/.ssh/config”文件中添加了这个,其中指的是我的用户目录。我已经添加了ForwardAgent行,但没有任何区别。如果有人能够确认上述在Windows上的正确文件名/位置,那将不胜感激! - Rjs37
我也尝试了cmder配置目录,因为看到它可能在那里寻找,但结果完全相同。 - Rjs37

2
在这个页面中提到:http://www.solarpolar.co.uk/laravel-homestead-setup-on-windows-7/,可以通过使用vagrant来解决这个问题。
首先输入vagrant global-status,然后会显示虚拟机列表:
$ vagrant global-status
id       name    provider   state   directory
--------------------------------------------------------------------------------------------------------
4d0a8c6  default virtualbox saved   C:/CarlosPC/vagrant_getting_started
57a7a6a  default virtualbox running C:/Users/CarlosPC/AppData/Roaming/Composer/vendor/laravel/homestead

请注意Homestead虚拟机的ID,本例中为57a7a6a

其次,您可以使用vagrant ssh命令和上述ID来进行SSH连接,如下所示:

vagrant ssh 57a7a6a

完成了!不再卡顿。

1
原来我描述的冻结问题是在Windows上使用“homestead ssh”命令时出现的问题。

这里已经有描述了: http://stagerightlabs.com/blog/running-homestead-2-on-windows

“vagrant up” 命令正常运行(重新构建机器时使用“vagrant up”命令)。这个问题让我疯狂了!

1

我遇到了同样的问题,但它只在特定网络上发生。可能与他们的ISP的DNS提供商有关。

我通过使用Google的公共DNS服务器 8.8.8.8解决了这个问题。

值得一试。


不幸的是它没有起作用。我正在使用wifi(我的笔记本电脑上没有lan端口),所以我将dns更改应用于该适配器,但没有看到任何区别。 - Rjs37

-1

正如Carlos所提到的,您可以使用:

vagrant ssh {vagrant_id}

或者您可以创建一个别名,使用单个命令而不必知道vagrant_id。

vi ~/.bashrc

将这些行粘贴进去:

alias homestead_ssh="homesteadSsh"
function homesteadSsh(){
        vagrant ssh $(vagrant global-status | grep homestead | awk '{print $1}')
}

保存它,并运行此命令以应用更改

. ~/.bashrc

现在你可以在终端中简单地使用homestead_ssh。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接