Vagrant共享

Vagrant共享

vagrant共享可以让自己的配置环境,和世界上的的任何一个人共享。只需要一个命令vagrant share 就可以直接和有网络环境的人协同工作。Vagrant共享主要有三种工作模式。这三个种工作模式不是互斥的,也就说说这个三个模式可以在任何条件下,同时使用。

  • HTTP 共享模式:这种模式将会创建一个URL,可以把这个URL给想共享的你环境的人。这个URL将会直接连接到你的Vagrant环境。用这个URL的人不需要安装Vagrant,所以这个URL可以给任何人。这种模式主要用在测试网站、给客户、团队人员或者领导展示工作成果的时候用。
  • SSH共享:这种模式可以让那些在客户端运行vagrant connect --ssh命令的人立刻SSH连接到你的vagrant环境。这种模式主要用于一起编程或者解决问题的时候用。
  • 通用共享:这种模式可以让在客户端运行vagrant connect命令的人直接连接你Vagrant中开开放的端口。这种模式主要用于在局域网的情况下,想连接你的vagrant环境。

这三种模式的具体细节,将在下面部分介绍。同时有一部分详细介绍这些模式的安全含义。

Vagrant共享还需要一个HashiCorp的账户。

HTTP共享

Vagrant共享创建了一个共用的URL,通过这个URL就可以访问Vagrant环境下的一个HTTP服务器。HTTP共享是当运行vagrant share命令时候的默认模式。

因为这种模式创建了一个可以公共访问的URL,所以需要连接的人即使不安装vagrant也能访问。

这种模式有很多可以用于的场景:比如想测试网络可以把你的Vagrant环境放到Internet。也可以给客户、同事或领导展示。

用法:

想要HTTP 共享的,只需要运行vagrant share

 

$ vagrant share
==> default: Detecting network information for machine...
    default: Local machine address: 192.168.163.152
    default: Local HTTP port: 4567
    default: Local HTTPS port: disabled
==> default: Checking authentication and authorization...
==> default: Creating Vagrant Share session...
    default: Share will be at: ghastly-wombat-4051
==> default: Your Vagrant Share is running!
    default: Name: ghastly-wombat-4051
==> default: URL: http://ghastly-wombat-4051.vagrantshare.com

vagrant就会检测你的正在运行的HTTP服务,然后把可以使用的显示出来。只要把这个URL给需要访问的人,他就可以访问。如果vagrant在检测的时候发现http 服务有问题,可以用--http或者--https标识符,获取更准确的信息。在vagrant share命令运行期间,这种共享会一直运行。可以按Ctrl-C来终止这个会话。

禁用HTTP共享

如果不想把自己创建的vagrant环境共享,则可以用vagrant share命令加上--disable-http标识符就可以了。运行这个命令将不会创建URL共享方式,但是可以采用别的共享模式共享。

无法找到资源

共享web应用必须用相对路径来获取本地的图片、样表或者javascript脚本等等。开发模式下的web应用将会被远程获取。这也就是说如果程序中有直接获取资源的编码,比如说<img src="http://127.0.0.1/header.png">,这么写的话,其他人就获取不到。

大多数的web应用框架或者工具包都有生成相对路径的设置或者帮助。通常情况下相对路径是一个很好的编程习惯,所以建议大家都这么做。

HTTPS(SSL)

vagrant共享也可以开放一个SSL端口来,进行SSL访问。例如,不是用http://foo.vagrantshare.com,而是通过https://foo.vagrantshare.com来获取。默认情况下,vagrantshare在你的开发环境中,寻找任何在443端口上的SSL,如果找不到,则SSL将会被禁用。你也可以强制设置SSL通过--https标志符,来执行SSL的端口

SSH 共享

vagrant 只需要运行vagrant share命令加上--ssh标志符,就可以让远程的客户端通过SSH方式访问到你的vagrant环境。这种简单的SSH共享的方式,对于你想帮助同事进行问题解决是非常有用的。这样也可以进行结对编程。默认的情况下SSH共享是禁用的。如果想开启只需要运行vagrant share的时候加上--ssh标识符就可以了。

用法:

只需要运行vagrant share --ssh.当ssh服务被启用的时候,vagrant就会生成一个新的密钥对,用来进行SSH访问。共用部分自动的插入到vagrant的机器中,私钥部分被上传到服务器用来管理共享人员。私钥部分是用一个密码进行加密的,当然也可以不设置密码。这个密码是不被vagrant传输的,他的作用主要是防止那些知道机器名字,可以任意访问你的电脑的人访问。

运行完vagrant share --ssh后,将会把共享的内容显示出来。

 

$ vagrant share --ssh
==> default: Detecting network information for machine...
    default: Local machine address: 192.168.163.152
    default: Local HTTP port: 4567
    default: Local HTTPS port: disabled
    default: SSH Port: 22
==> default: Generating new SSH key...
    default: Please enter a password to encrypt the key:
    default: Repeat the password to confirm:
    default: Inserting generated SSH key into machine...
==> default: Checking authentication and authorization...
==> default: Creating Vagrant Share session...
    default: Share will be at: itty-bitty-polar-8667
==> default: Your Vagrant Share is running!
    default: Name: itty-bitty-polar-8667
...

任何人都可以直接通过SSH访问到你的vagrant环境,通过运行vagrant connect --ssh NAME,这里的名字是之前显示的共享的名字。

 

$ vagrant connect --ssh itty-bitty-polar-8667
Loading share 'itty-bitty-polar-8667'...
The SSH key to connect to this share is encrypted. You will
require the password entered when creating the share to
decrypt it. Verify you have access to this password before
continuing.

Press enter to continue, or Ctrl-C to exit now.
Password for the private key:
Executing SSH...
Welcome to Ubuntu 12.04.3 LTS (GNU/Linux 3.8.0-29-generic x86_64)

 * Documentation:  https://help.ubuntu.com/
Last login: Fri Mar  7 17:44:50 2014 from 192.168.163.1
vagrant@vagrant:~$

 如果私钥被设置了密码加密,那么连接的时候也会被提示输入密码解密。还有一个--ssh-once标志付可以用来使用,当使用了这个标识符,只有一次可以通过vagrant connect --ssh访问的机会。这样就防止了以后的继续访问。

 VAGRANT CONNECT

vagrant可以共享任何端口到你的vagrant环境中,而不仅仅是通过SSH和HTTP。vagrantconnect 命令给正在连接的人一个静态的IP,他们可以被用来进行同共享vagrant环境的交互。任何对这个IP地址的交互都会发送到Vagrant的环境中。

用法:

只需要运行Vagrant share。就会自动共享尽可能多的端口给需要连接的机器。如果vagrant环境有个静态ip或者DNS地址。那么所有的端口将会可用。否则,vagrant将会直接向后开放机器的端口。注意运行vagrant share获得的共享名字,把这个名字给那些想要连接你机器的人。他们只需要简单运行 vagrant connect NAME.这将会给他们一个静态IP地址,来访问你的Vagrant环境。

他是如何工作:

Vagrant connect是通过他最善于做的管理虚拟机来实现的。vagrant connect创建了一个很小的虚拟机,这个虚拟机只需要占用大约20M的内存。任何发送到这个虚拟机的交互都被代理到vagrant虚拟机环境,就好像直接连接他一样。

 注意:vagrant 不安全的因素

如果vagrant环境或者箱子,被vagrant的不安全密钥保护。那么任何人都可以通过SSH访问。当你想和你信任的人共享,在一定程度你可能只想共享一个类或者一个参数。你不想他们可以通过SSH连接进来。这种情况下,我们建议把不安全的密钥,删除掉。

安全

共享你的vagrant环境将会影响一定的安全问题。vagrant共享的安全机制通过SSH的一个密钥。同时,还有几个标志可以控制访问和管理安全。

--disable-http 这个标志不会允许创建一个公共的可访问的HTTP URL。当这个标志设置了,只有通过vagrant connect的方式访问。

--ssh-once 这个标志仅仅允许一个人SSH到你的共享环境一次。当第一个通过SSH访问后,密钥就会被删除掉,SSH也就没法再次连接了。

除了这些标志选项,我们还创建了其他特性:

  • vagrant共享用端到端的TLS连接。所以即使是非加密的TCP流在通过各种代理的时候也会被加密。只有在本地代理和vagrant环境之间本地通信的时候,才不会加密。
  • 共享的名字,比如‘happy-panda-1234’是从4000万个名字池中随机选取的。我们还在继续增加这个名字池的个数。不可能有人可以猜到你的共享名字。
  • 默认情况下,SSH密钥是通过密码加密的。这个名字是不传输到服务器上,也不通过网络。
  • 默认情况下,SSH是不共享的,他必须通过--SSH标志来指定。
  • 一个Web接口,将会显示共享历史。未来将会添加展示的基本日志
  • 共享进程将会一个小时后过期。或者可以通过CTRL-C来终止

更重要的是,你必须理解通过运行vagrant share,就会被所有知道你共享名字的人访问。如果没有共享,就不会访问。

自定义提供程序

如果你开发了一个自定义的提供程序,需要再做一点别的小工作,为了程序能够更好的运行。

到现在为止,只有一步需要做:

public_address 提供者能力-你必须实施这个能力来获取一个可以连接客户机的地址字符串。这不是一个全局路由的地址,只有运行vagrant程序的机器才需要。如果没有发现一个地址,将会返回nil

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值