CentOS新建用户并使能密钥登录的方法

互联网老兵互联网老兵 05-10 189 阅读

CentOS 默认只有一个 root 用户,但是 root 用户的权限过大,而且不利于多人协作,基于权限管理和安全的原因,我们为系统新建一个用户,并且使能其 SSH 登录,同时禁止 root 用户的登录;

基于CentOS Linux release 7.6.1810 (Core)实践;

CentOS新建用户并使能密钥登录的方法

新建用户

在 CentOS 中,adduser和useradd没有区别:

[root@centos_7_6_1810 ~]# ll /usr/sbin/ | grep user
lrwxrwxrwx 1 root root   7 Jun 24 10:14 adduser -> useradd
-rwxr-xr-x. 1 root root  33104 Aug 3 2017 fuser
-rwxr-xr-x. 1 root root  15832 Apr 13 2018 lnewusers
-rwxr-xr-x. 1 root root  15752 Apr 13 2018 luseradd
-rwxr-xr-x. 1 root root  11576 Apr 13 2018 luserdel
-rwxr-xr-x. 1 root root  19896 Apr 13 2018 lusermod
-rwxr-xr-x 1 root root  76232 Mar 14 2019 newusers
-rwxr-xr-x 1 root root  33072 Mar 14 2019 runuser
-rwxr-xr-x. 1 root root  19720 Apr 11 2018 sasldblistusers2
-rwxr-x--- 1 root root  118224 Mar 14 2019 useradd
-rwxr-x--- 1 root root  80400 Mar 14 2019 userdel
-rwxr-x--- 1 root root  113856 Mar 14 2019 usermod
-rwsr-xr-x. 1 root root  11376 Oct 31 2018 usernetctl

从上面的命令中可以看出:adduser只不过是useradd命令的一个软连接;

关于软连接,你可以暂时把它理解成 Windows 系统中的快捷方式;

使用useradd命令创建新用户:

[root@centos_7_6_1810 ~]# useradd luizyao
[root@centos_7_6_1810 ~]# ls /home/
luizyao

在大多数 Linux 的发行版本中,useradd命令并不会在/home/下创建对应的用户目录,如果想要创建,需要在命令中添加-m (--create-home)选项;但是,CentOS 会为我们自动创建这个用户目录;

如果我们想要以这个用户名登录系统,必须为其设置一个密码:

[root@centos_7_6_1810 ~]# passwd luizyao
Changing password for user luizyao.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

然后,我们就可以用这个用户登录系统:

[luizyao@centos_7_6_1810 ~]$ whoami
luizyao

为新用户授权

通常情况下,新用户在自己的用户目录(/home/luizyao/)下拥有完整的权限,其它目录需要他人授权;而我们最常用的就是 root 用户的权限,这时候sudo命令就可以帮助到我们:它允许信任的用户以其他用户的身份去执行命令,默认使用的是 root 用户;

新用户并不在信任名单中,所以我们无法借用 root 用户身份去执行命令:

注意:此时,以新用户的身份登录系统的;

[luizyao@centos_7_6_1810 /]$ sudo whoami
[sudo] password for luizyao:
luizyao is not in the sudoers file. This incident will be reported.

在 CentOS 中,我们有两种方法把新用户添加到 Sudoers 列表中:

注意:此时,以 root 的身份登录系统;

方法一:把新用户添加到wheel用户组中

基于 RedHat 分发版本的系统,如 CentOS 和 Fedora,用户组wheel已经被授予 sudo 的权限;所以,我们可以通过把新用户添加到wheel用户组中,来获取 sudo 的权限:

[root@centos_7_6_1810 ~]# groups luizyao
luizyao : luizyao
[root@centos_7_6_1810 ~]# usermod -aG wheel luizyao
[root@centos_7_6_1810 ~]# groups luizyao
luizyao : luizyao wheel


我们通过usermod命令把新用户添加到wheel用户组中,可以使用groups命令查看用户所属的用户组;

这个时候,新用户就可以借助 root 的权限执行命令了:

[luizyao@centos_7_6_1810 root]$ sudo whoami
[sudo] password for luizyao:
root

注意:

这种方法下,执行sudo命令需要输入新用户的密码,因为这是wheel用户组的默认配置,如下所示:

# /etc/sudoers

106 ## Allows people in group wheel to run all commands
107 %wheel ALL=(ALL)  ALL
108
109 ## Same thing without a password
110 # %wheel  ALL=(ALL)  NOPASSWD: ALL

从用户组中删除用户。可以使用如下命令:

[root@centos_7_6_1810 ~]# gpasswd -d luizyao wheel
Removing user luizyao from group wheel
[root@centos_7_6_1810 ~]# groups luizyao
luizyao : luizyao

方法二:把新用户添加到sudoers列表中

在/etc/sudoers文件中,可以配置用户和用户组的 sudo 权限,这种方式更加灵活一点;并且,有两种方法为新用户配置权限:

1.你可以直接在/etc/sudoers文件中配置新用户的权限,但是要注意这个文件的默认权限是只读的,所以你要先添加写入权限,编辑完以后,再恢复为只读;

请使用visodu命令修改/etc/sudoers文件,因为它会帮你检查语法错误;

2.你也可以在/etc/sudoers.d目录下,为新用户添加一个专门的配置文件(推荐):

bash [root@centos_7_6_1810 ~]# echo "luizyao ALL=(ALL) NOPASSWD:ALL" | tee /etc/sudoers.d/luizyao luizyao ALL=(ALL) NOPASSWD:ALL [root@centos_7_6_1810 ~]# ll /etc/sudoers.d/luizyao -rw-r--r-- 1 root root 32 Sep 17 17:51 /etc/sudoers.d/luizyao

上述命令表示:luizyao 可以在任何主机上(第一个ALL)以任何用户的身份(第二个ALL,默认为 root)执行任何命令(第三个ALL),并且不需要密码:

[luizyao@centos_7_6_1810 root]$ sudo whoami
root

注意:文件的名字可以是任意的,只是通常我们会配置成用户名;

新用户使能 SSH 密钥登录

此时,以新用户的身份登录系统;

创建密钥对:

[luizyao@centos_7_6_1810 ~]$ ssh-keygen -t ecdsa # 椭圆曲线数字签名算法
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/luizyao/.ssh/id_ecdsa): # 选择密钥对存放的文件夹 
Created directory '/home/luizyao/.ssh'.
Enter passphrase (empty for no passphrase): # 私钥的密码
Enter same passphrase again: # 确认私钥密码
Your identification has been saved in /home/luizyao/.ssh/id_ecdsa.
Your public key has been saved in /home/luizyao/.ssh/id_ecdsa.pub.
The key fingerprint is:
SHA256:FljQN9JFxB/C83Mv7N3rFNLCxXICRxaKzKDb+Tzsgwo luizyao@centos_7_6_1810
The key's randomart image is:
+---[ECDSA 256]---+
|  .+.. B==. |
|  .o* = X o |
|  .. .* o B = |
|  o .. . X .|
|  . oS = =.|
|  .+  = o|
| E .= . +.|
| . .... o o|
|  .. .. .o.|
+----[SHA256]-----+

下载私钥到本地:

基于 Mac OS 的实践;

使用scp命令下载私钥:

yaomengdeMacBook-Air:~ yaomeng$ scp luizyao@
:/home/luizyao/.ssh/id_ecdsa ~/.ssh/

此时,我们仍然需要密码登录:

yaomengdeMacBook-Air:~ yaomeng$ ssh luizyao@
Enter passphrase for key "/Users/yaomeng/.ssh/id_ecdsa": # 输入私钥密码,登录失败
luizyao@www.luizyao.com password: # luizyao 的用户密码
Last login: Tue Sep 17 22:50:22 2019

SSH 免密登录

重命名公钥为 authorized_keys:

[luizyao@centos_7_6_1810 ~]$ mv ~/.ssh/id_ecdsa.pub ~/.ssh/authorized_keys
[luizyao@centos_7_6_1810 ~]$ ll ~/.ssh/
total 8
-rw-r--r-- 1 luizyao luizyao 185 Sep 17 22:58 authorized_keys
-rw------- 1 luizyao luizyao 314 Sep 17 22:58 id_ecdsa

注意:

因为我之前并没有 authorized_keys 文件,所以这里我直接重命名;如果之前已经有 authorized_keys 文件,可以使用以下命令,把公钥添加到文件末尾:

cat >> ~/.ssh/authorized_keys < ~/.ssh/id_ecdsa.pub

注意 authorized_keys 文件、~/.ssh/ 目录、或者 用户的 home 目录(/home/luizyao/)对其他用户赋予了写入的权限,那么sshd判断此文件已经不安全,将不会使用这个文件,除非你已经设置 StrictModes 为 no;

The End 微信扫一扫

文章声明:本网站发布的内容(图片、视频和文字)以用户投稿、转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。邮箱:info@xzpmsj.com。

上一篇 下一篇
取消
微信二维码
微信二维码
支付宝二维码