Vagrant安装配置教程及详细避坑指南

前言

Vagrant是一个轻量级虚拟机,可以配合Virtualbox进行可视化管理;Vagrant是拿来学习Linux及作为虚拟服务器的一个很好选择;

更多详细介绍可以度娘,因为vagrant安装过程中有很多坑,所以本文只总结如何配置及避免踩坑,如果你安装vagrant过程中,坑层出不穷,那么我们可能是一张床上的(口误,一条船),希望以下可以帮助到大家;作者使用的是mac系统,其他系统自行参考;虚拟机box用的是ubuntu;

安装

因为Vagrant可以配合Virtualbox一起使用,所以我们需要安装两个主体;

1.安装Virtualbox

这个安装比较简单,直接到官网下载适合自己操作系统的安装包即可;

2.安装Vagrant

vagrant的安装主要通过终端,有不同方法,这里只介绍适合国内的安装方法;

首先到官网下载自己想要的box(即系统),这里下载会比较慢,可以通过迅雷下载改善;

下载好box之后,创建一个给vagrant使用的文件夹,然后打开终端cd到该文件下,在终端输入:

$ vagrant box add boxname /User/xxx/xxxx ; //boxname随意,路径为你下载后box的路径
$ vagrant init boxname; // 初始化box
$ vagrant up; // 启动配置box

vagrant up 之后留心一下终端的显示,这里第一个坑要来了,你可以看到一大推的FBI warning:

但它仍然启动成功了,大概意思就是vagrant是默认开启通过公匙ssh连接的,

只是现在没有配置公匙,启动过程中自动生成了一个公匙供使用者临时连接到虚拟机;

所以说,我们现在登录连接到虚拟机仍然是可以的,可以通过以下命令登录:
 

$ vagrant ssh

这个时候可以看到画面:

整个过程就完成啦~

接下来,这里我们需要配置vagrant,以及修复一下刚才FBI warning,如果不去配置这个,貌似重启vagrant之后就加载以下的画面:

配置

因为vagrant是默认通过ssh密匙登陆的;所以在配置之前,我们可以在本地的物理机生成一对密钥匙,本地另一个终端输入:

$ ssh-keygen

第一个参数是生成密匙的位置,默认为/Users/用户/.ssh/id_rsa,可以直接enter默认跳过,会在.ssh目录下生成一对密匙;

第二个参数密匙密码,enter跳过则为空,为了以后方便可以直接跳过;

重复输入一次密码;密匙就生成成功啦!

然后通过cat命令复制刚才生成的公匙;

这个时候我们打开当前运行vagrant的文件夹,会看到一个vagrantfile的文件,打开编辑它,在里面加入:

config.ssh.private_key_path = "/Users/hongjian/.ssh/id_rsa"
config.ssh.forward_agent = true

这里两行,主要是指定ssh连接时要用到的私钥,及开启本地转发;这两个最重要!影响使用vagrant ssh连接虚拟机;

然后回到虚拟机终端上,修改vagrant启动时生成的公匙,一般对应着vagrant/.ssh/anthorized_keys(注意当前用户是vagrant);

在终端输入:

$ nano .ssh/authorized_keys

然后复制刚才拷到的公匙到该文件下;保存;退出

这个时候可以通过命令exit;退回到vagrant环境目录下,重启vagrant:

$ exit;
$ vagrant reload

然后再通过vagrant ssh连接vagrant,如果成功就不会看到FBI warning啦;

有兴趣的话,其他更详细配置参考这里

 

扩展

这一章节假设你已经了解过ssh

如果在当前虚拟机系统下创建一个非root用户(即不通过vagrant用户),如何启用ssh连接呢?可以尝试以下步骤:

1.创建用户

vagrant ssh连接后,在终端输入:

$ sudo adduser otheruser;

然后按提示输入密码,其他资料随意;

PS:我相信有一部分是看过其他教程跟着配置的,什么600,700权限,该检查的都检查来,就是不成功;那么极有可能是以下的原因;新手直接看下面的步骤;

这个时候配置新建用户的ssh要注意一个问题,作者绕来很久才发现了这个低级的错误:不能直接通过当前用户(即vagrant)来编辑你新创建用户下的ssh关联文件(即新建用户下的.ssh和authorized_keys),你需要开启vagrant密码登录后,在虚拟机内登录到新建的用户去配置.ssh和authorized_keys,可以通过以下步骤;

首先编辑sshd_config 开启密码登录(更多sshd_config的解释):

$ sudo vim /etc/ssh/sshd_config;

找到PasswordAuthentication no这一行,把no改成yes;

加入一行,就是要把你允许通过ssh连接到vagrant的用户,添加到allowusers后面:

AllowUsers vagrant otheruser //vagrant一定要加上,不然退出后会翻车不,能通过vagrant ssh登录

重启你的vgrant虚拟机

$ sudo service sshd restart 

这时可以就可以通过密码登录来,在当前的虚拟机终端下输入:
 

$ ssh otheruser@127.0.0.1 ;// otheruser为你新建的用户

然后输入密码登录即可;

这个时候就可以配置.ssh文件和authorized_keys了:

$ mkdir .ssh; //新建.ssh目录
$ touch .ssh/authorized_keys; //.ssh下新建文件authorized_keys
$ nano .ssh/authorized_keys; // 打开authorized_keys,复制物理机公匙内容到这里,保存退出继续
$ chmod 700 .ssh; //分配权限
$ chmod 600 .ssh/authorized_keys; //分配权限
$ service sshd restart; //重启sshd服务

这个时候新用户就可以通过以下命令进行 ssh 登录啦!

ssh otheruser@127.0.0.1 -p 2222 -i ~/.ssh/yourkey

注意:如果之前设置过vagrant或设置过本地物理机下~/.ssh的known_hosts,可能会登录失败,这个时候可以删除此文件重试

-p后面的是ssh的默认端口2222, -i 后面是当前物理机器的私钥路径;成功后如果密钥设置了密码,就会提示你输入密码;

但是每次连接虚拟机都输入这么一大推很蛋疼啊,这个时候,可以在物理机的密钥所在目录下创建一个config的文件(有的同学应该都会了),加入以下步骤配置简化;

 

2.端口映射

将虚拟机的端口映射至宿主机
修改Vagrantfile文件, 将下面这行注释去掉(删去#), 并保存

config.vm.network "forwarded_port", guest: 80, host: 8080

重启虚拟机之后, 访问宿主机的8080端口则会访问到虚拟机的80端口

 

参考文章:Linux系统下的ssh配置

 


 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值