我的虚拟机初始化(provision)流程

拿到腾讯云的虚拟机,默认的用户为root,默认为SSH密码登录。本文将讲解使用Ansible初始化虚拟机的整个过程。

准备工作

在通过Ansible自动化初始化之前,需要手动做以下事情:

  • 重新设置SSH端口(黑客们成天都在扫描你的22端口)
  • 创建自己的用户(用于平时登录和Ansible)
  • 设置SSH免密登录(为了方便)
  • 禁用SSH密码登录 (为了安全)
  • 禁止root用户登录 (为了安全)

重新设置SSH端口

找到/etc/ssh/sshd_config文件,先备份:

cp sshd_config sshd_config.origin

然后修改sshd_config文件:

#Port 22
Port 22222

重启SSH服务:

systemctl restart sshd

退出后重新登录:

ssh root@虚拟机IP -p 22222

创建自己的用户

创建用户myuser,并设置用户在wheel组,wheel组下的用户拥有sudo权限。

首先将wheel组加入免密sudo权限中(有些Linux下wheel已经在sudo免密权限中了,腾讯云的centos默认配置是wheel需要密码才能sudo),修改/etc/sudoer文件:

cp sudoers sudoers.origin # 备份原文件
visudo #编辑sudoers文件专用命令

注释掉:

#%wheel ALL=(ALL)   ALL

启用:

%wheel  ALL=(ALL)   NOPASSWD: ALL

然后创建名为myuser的用户:

useradd -d /home/myuser -m myuser -g wheel

配置SSH公钥文件用于免密SSH登录:

su myuser #切换到myuser用户
cd #切换到myuser用户的主目录(/home/myuser)
mkdir .ssh 
chmod 700 .ssh #很重要,SSH对权限很敏感,设置不正确可能导致无法登录
cd .ssh
touch authorized_keys #很重要,SSH对权限很敏感
chmod 600 authorized_keys

然后将myuser用户的公钥文件的内容拷贝到authorized_keys,如果还没有SSH密钥对,请参考这里。

设置SSH免密登录

此时的myuser用户依然无法SSH免密登录,因为我们还没有对SSH服务器进行设置,修改/etc/ssh/sshd_config

PubkeyAuthentication yes

重启SSH:

systemctl restart sshd

登出虚拟机后,便可以用myuser用户免密登录了(默认myuser的私钥为.ssh/id_rsa):

ssh myuser@虚拟机IP

禁用SSH密码登录

请保证myuser用户可以免密SSH登录了之后才禁用密码登录,不然root用户也登录不了了。

修改/etc/ssh/sshd_config

PasswordAuthentication no

禁止root用户登录

修改/etc/ssh/sshd_config

PermitRootLogin no

重新启动sshd:

systemctl restart sshd

你可能感兴趣的:(我的虚拟机初始化(provision)流程)