virtualbox+vagrant学习-2(command cli)-17-vagrant ssh命令

SSH

格式:

vagrant ssh [options] [name|id] [-- extra ssh args]

这将SSH导入正在运行的vagrant机器,并允许你访问机器的shell。

userdeMacBook-Pro:~ user$ vagrant ssh -h
Usage: vagrant ssh [options] [name|id] [-- extra ssh args] Options: -c, --command COMMAND Execute an SSH command directly 直接执行SSH命令
-p, --plain Plain mode, leaves authentication up to user 普通模式,将身份验证留给用户
-t, --[no-]tty Enables tty when executing an ssh command (defaults to true) 在执行ssh命令时启用tty(默认为true)
-h, --help Print this help 打印帮助信息

1.

1)在一个简单的vagrant项目中,创建的实例将被命名为default。即不使用实例的名字和使用default得到的结果是一样的,如:

userdeMacBook-Pro:~ user$ vagrant ssh
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.--generic x86_64) * Documentation: https://help.ubuntu.com/
New release '14.04.5 LTS' available.
Run 'do-release-upgrade' to upgrade to it. Welcome to your Vagrant-built virtual machine.
Last login: Mon Dec :: from 10.0.2.2
vagrant@precise64:~$ logout
Connection to 127.0.0.1 closed.

使用default:

userdeMacBook-Pro:~ user$ vagrant ssh default
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.--generic x86_64) * Documentation: https://help.ubuntu.com/
New release '14.04.5 LTS' available.
Run 'do-release-upgrade' to upgrade to it. Welcome to your Vagrant-built virtual machine.
Last login: Mon Dec :: from 10.0.2.2
vagrant@precise64:~$ logout
Connection to 127.0.0.1 closed.

可见在同一个项目中都是打开同一个实例

2)在多机器设置中,你可以使用vagrant状态中显示的名称登录到每个vm,如:

 $ vagrant status
Current machine states: node1 running (virtualbox)
node2 running (virtualbox) This environment represents multiple VMs. The VMs are all listed
above with their current state.
$ vagrant ssh node1
Welcome to your Vagrant-built virtual machine.
Last login: Fri Sep :: from 10.0.2.2
vagrant@precise64:~$ logout
Connection to 127.0.0.1 closed.
$ vagrant ssh node2
Welcome to your Vagrant-built virtual machine.
Last login: Fri Sep :: from 10.0.2.2
vagrant@precise64:~$ logout
Connection to 127.0.0.1 closed.

3)在运行来自不同项目的机器的系统中,你可以使用流浪全局状态中列出的id:

userdeMacBook-Pro:~ user$ vagrant global-status
id name provider state directory
------------------------------------------------------------------------
547b2b8 default virtualbox running /Users/user The above shows information about all known Vagrant environments
on this machine. This data is cached and may not be completely
up-to-date (use "vagrant global-status --prune" to prune invalid
entries). To interact with any of the machines, you can go to that
directory and run Vagrant, or you can use the ID directly with
Vagrant commands from any directory. For example:
"vagrant destroy 1a2b3c4d"

然后使用上面显示的id-547b2b8运行机器:

userdeMacBook-Pro:~ user$ vagrant ssh 547b2b8
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.--generic x86_64) * Documentation: https://help.ubuntu.com/
New release '14.04.5 LTS' available.
Run 'do-release-upgrade' to upgrade to it. Welcome to your Vagrant-built virtual machine.
Last login: Mon Dec :: from 10.0.2.2
vagrant@precise64:~$ logout
Connection to 127.0.0.1 closed.

如果在命令行中找到--(两个连字符),则在此之后的任何参数都将直接传递到ssh可执行文件中。这允许你传递任意命令,以便执行诸如反向隧道深入到ssh程序中的操作。

2.SSH客户机使用

vagrant将尝试使用安装在主机上的本地SSH客户机。在POSIX机器上,必须安装SSH客户机,并在路径上可用

对于Windows安装,安装程序镜像中提供了SSH客户机。如果在当前路径上没有找到SSH客户机,vagrant将使用它提供的SSH客户机。根据用于运行vagrant程序的本地环境,安装程序提供的SSH客户机可能无法正常工作。例如,当使用cygwin或msys2 shell时,SSH客户机在交互运行时将无法按预期工作。安装为当前工作环境构建的SSH包将解决这个问题。

3.后台执行

如果你指定的命令在后台运行(例如将&追加到shell命令中),它几乎会立即终止。这是因为,当Vagrant执行该命令时,它将在shell上下文中执行该命令,当shell退出时,所有子进程也将退出。

为了避免这种情况,你需要将流程从shell中分离出来。请谷歌了解如何为你的shell执行此操作。其中一种方法是nohup命令。

4.Pageant on Windows

SSH可执行文件将无法访问Windows上的Pageant。虽然vagrant可以通过内部库访问Pageant,但是SSH可执行文件不支持Pageant。这意味着,当使用vagrant ssh命令时,Pageant中的键不可用于转发。

上一篇:《基于 Java EE 的高校重修管理系统设计与实现》论文笔记(九)


下一篇:EF Core