如果我vagrant ssh
使用windows cmd,我会得到一个很好的命令提示符,如下所示:
vagrant@homestead:~$ echo foo
vagrant@homestead:~$ foo
但是对于cygwin和mintty,我根本没有提示:
echo foo
foo
我认为它与“伪tty分配”有关。
使用cygwin和mintty,我可以提示:
vagrant ssh -- -t -t
如何更改cygwin和mintty以便我不必告诉-t
?
关于ssh -t选项:
“强制伪tty分配。这可用于执行arbi- 在远程机器上运行基于屏幕的程序,可以 非常有用,例如,在实现菜单服务时。多个-t 选项强制tty分配,即使ssh没有本地tty。“
答案 0 :(得分:6)
我遇到了同样的问题,解决方法是设置VAGRANT_PREFER_SYSTEM_BIN环境变量,让vagrant使用普通的ssh可执行文件。
你可以这样做:
VAGRANT_PREFER_SYSTEM_BIN=1 vagrant ssh
或将其放入.bash_profile:
export VAGRANT_PREFER_SYSTEM_BIN=1
参考:https://github.com/hashicorp/vagrant/issues/9143#issuecomment-343311263
答案 1 :(得分:2)
我遇到了上述相同的问题。但只能在三台PC中的一台上使用。但作为我正在做的解决方法:
# save the config to a file
vagrant ssh-config > vagrant-ssh
# run ssh with the file.
ssh -F vagrant-ssh default
来自How to ssh to vagrant without actually running "vagrant ssh"?
的回答在这种情况下,我得到提示,更重要的是历史循环和ctrl-c等正常工作。
答案 2 :(得分:1)
Vagrant是一个管理虚拟机的windows
程序
https://www.vagrantup.com/intro/index.html
因此它与伪tty的接口不好 cygwin程序使用的结构。 阅读有关许多其他Windows程序的类似问题的参考 https://github.com/mintty/mintty/issues/56
Mintty是一个Cygwin程序。它期望在其中运行的交互式程序使用cygwin tty功能来实现交互行为。 在Windows CMD中从Bash运行Vagrant,使CMD成为终端控件,因此Vagrant在交互行为方面没有问题。
我认为不需要在Cygwin中运行Vagrant
答案 3 :(得分:0)
由于vagrant是基于windows的,我使用ConEmu而不是cygwin的shell(mintty)
choco install conemu
通过chocolatey并且有效
答案 4 :(得分:0)
一般的解决方案是教vagrant
使用ssh
,与首选终端兼容。像Cygwin ssh + mintty。
现代游民(v2.1.2)在Windows上默认具有VAGRANT_PREFER_SYSTEM_BIN=1
。
要解决问题,
VAGRANT_LOG=info vagrant ssh
In v2.1.2 they broke Cygwin support。请参阅我对lib/vagrant/util/ssh.rb
进行破解的错误报告,以使其正常工作。