Vagrant 默认是用root账户登陆

本文不讨论,通过账号密码登陆的登陆的方式,因为我所在版本【Vagrant 2.2.9】,就算通过config-ssh-insert_key=false,也无法通过免输入密码的方式登陆

vagrant账户登陆的苦恼

每次通过 vagrant ssh 命令登陆之后,默认使用的vagrant的账户,有时候我需要操作一些命令需要 root 的用户权限才可以操作,

很自然我们就会想道通过suod -i 切换到的root账号上,再来执行对应的命令操作。

1
2
3
4
5
6
7
8
9
vagrant ssh

yum install xxx
# 提醒没有权限

sudo -i

yum install xxx
# 安装成功

也许版本有坑?

1
2
3
Mac OS 11.4
vagrant --version
Vagrant 2.2.9

网上一顿搜索,找到很多帖子,但是很多人都是说明自己的使用的哪个版本的
所以很多帖子,都可能有点过期,反正找了一大圈,没有找到合适的解决方案;
建议查看本文的时候,看看你们的版本是否已经高于我的版本,如果高于或者低于2.x这个版本的可能本文就不太适用,大家另辟蹊径吧。

完美解决

第一步,将本地公钥文件同步到虚拟机

1
2
3
4
cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1y....

# 如果没有到公私钥匙到话,就通过 ssh-keygen 生成一对吧。

第二步,登陆虚拟机

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
vagrant ssh
sudo -i

[root@localhost ~]# 需要注意看到,已经变成root@xxx才算切换成功喔。

cd /etc/ssh/

vi sshd_config

#PermitRootLogin yes
修改成
PermitRootLogin yes # 代表允许root用户登陆

mkdir /root/.ssh
chmod -R go= ~/.ssh
chown -R root:root ~/.ssh
cd /root/.ssh

echo 'ssh-rsa AAAAB3NzaC1y....你对公钥' >> authorized_keys

第四步,验证公钥登陆是否生效

1
2
3
4
5
ssh root@127.0.0.1 -p22230 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null

[root@localhost ~]#

如果看到这里,基本可以说明我们已经修改成功了

第五步,修改vagrant配置文件

1
2
config.ssh.username = 'root'
config.ssh.private_key_path = '~/.ssh/id_rsa'

最后一步

1
2
3
4
5
6
7
8
9
vagrant reload centos7

# 如果没有意外,重启一下服务,将默认通过root对账户进行登陆了。
vagrant ssh

# 当然通过其他的ssh客户端也是可以直接登陆上去
# 如果有下面的日志,也不要惊慌,稍等一会儿看看,是否最终能够登陆成
centos7: Warning: Connection reset. Retrying...
centos7: Warning: Remote connection disconnect. Retrying...

Vagrant%E9%BB%98%E8%AE%A4%E4%BD%BF%E7%94%A8root%E7%99%BB%E9%99%86%2004f5ec4a47414212bd73d14b1b5fa1a2/Untitled.png

Vagrant%E9%BB%98%E8%AE%A4%E4%BD%BF%E7%94%A8root%E7%99%BB%E9%99%86%2004f5ec4a47414212bd73d14b1b5fa1a2/Untitled%201.png

Vagrant%E9%BB%98%E8%AE%A4%E4%BD%BF%E7%94%A8root%E7%99%BB%E9%99%86%2004f5ec4a47414212bd73d14b1b5fa1a2/Untitled%202.png

总结与思考

有时候,找问题的时候,可以发散一下思维,不要老钻牛角尖,往往得不偿失。

例如,这一次,我找问题的思路一开始是这样子的。

1,一直觉得是vagrant的问题,一直搜索vagrant相关的内容

2,后来发现,我虚拟机使用Linux的厂商是centos7,能不能直接通过centos来解决,最后才找到正确之路

3,如果一直在纠结在vagrant的问题,最后可能一天都没有找到对应的解决思路

参考链接

How To Set Up SSH Keys on CentOS 7 | DigitalOcean

config.ssh - Vagrantfile | Vagrant by HashiCorp

如果有不对的地方,及时指出,我会继续努力。
稳食艰难啊,老细。(中文翻译:原创不易,您的支持将鼓励我继续创作!)
0%