在Linux上创建新用户并配置SSH免密连接

为什么要创建新用户?

  1. 权限控制:每个用户可以被赋予特定的权限,以限制其对系统资源的访问。创建新用户可以根据需要为其分配适当的权限,从而提高系统安全性,即使账户被窃取,也能将损失控制在限定的范围内。
  2. 隔离环境:通过创建新用户,可以隔离不同用户之间的环境,避免彼此之间的干扰和冲突。
  3. 跟踪活动:每个用户的活动都可以被追踪和记录,有助于监控系统的安全性和运行情况。

创建新用户的方法

1. 使用命令行创建新用户

在Linux系统中,可以使用useradd命令来创建新用户。

adduser也可以创建新用户,二者区别可以参考useradd 与adduser的区别

例如,本文以用户newuser为例,使用如下命令创建一个名为newuser的用户,

1
sudo useradd newuser

系统将提示您输入新用户的密码和其他信息。按照提示输入即可完成新用户的创建。

2. 设置用户密码

使用passwd命令来为新用户设置密码:

1
sudo passwd newuser

3. 授予新用户sudo权限(可选)

如果需要给新用户添加sudo权限,这里以Ubuntu 22.04LTS为例,可以使用下面其中一个方法:

(推荐)可直接将新用户添加到sudo用户组

使用以下命令将新创建的用户添加到sudo 组:

1
sudo adduser newuser sudo

撤销用户的 sudo 权限(例如 newuser),可以执行:

1
sudo deluser newuser sudo

(较为麻烦)修改sudoers文件

打开 /etc 目录下的 sudoers 文件,在 root ALL=(ALL) ALL 语句下添加 newuser ALL=(ALL) ALL

可以使用sftp工具直接更改后上传,也可以使用vim,下面是vim的操作方法:

1
2
# 执行
sudo vim /etc/sudoers

按i在当前光标处进入编辑模式

使用方向键移动光标,在root ALL=(ALL) ALL语句下添加一行

1
newuser ALL=(ALL) ALL

按一下esc,即退出编辑模式;

输入英文状态下的冒号:

之后输入wq后回车,即保存并退出;

如果遇到提示E45:readonly'option is set (add to override)无法保存修改,输入:wq!即可。

如果修改错误需要丢弃修改,esc输入冒号后,输入q!回车,即不保存退出。

vim使用方法菜鸟教程Linux vi/vim

要验证用户是否已添加到 sudo 组中,请运行:

1
2
3
sudo -l -U <username>
# 例如
# sudo -l -U newuser

输出以下内容代表有sudo权限

1
2
3
4
5
6
匹配 %2$s 上 %1$s 的默认条目:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty

用户 newuser 可以在 xiaoxin-virtual-machine 上运行以下命令:
(ALL : ALL) ALL

4.客户端生成SSH密钥对

SSH密钥对由公钥和私钥组成,私钥保存在客户端,而公钥保存在服务器端。

相较于用户名和密码认证方式,使用SSH密钥对认证方式具有以下优势:

  • 安全性:使用SSH密钥对登录认证更为安全可靠。
    • SSH密钥对安全强度远高于常规用户口令,可以杜绝暴力破解威胁。
    • 无法通过公钥推导出私钥。
  • 便捷性:
    • 如果您将公钥配置在Linux实例中,那么,在本地或者另外一台实例中,您可以无需输入密码,直接使用私钥通过SSH命令或相关工具登录。
    • 支持远程登录大量Linux实例。如果您需要批量维护多台Linux实例,可以使用这种方式登录。

打开cmd,使用ssh-keygen命令在客户端生成SSH密钥对:

1
ssh-keygen -t rsa -C "填入邮箱"

按照提示,选择保存密钥的位置和设置密钥的密码。

打开保存密钥对的文件夹,用记事本打开.pub结尾的文件,ctrl+A全选,ctrl+C复制内容。

5. 将公钥复制到服务器

打开 /home/newuser/.ssh 目录下的authorized_keys 文件,如果不存在就新建对应目录和文件,将之前生成的公钥文件中的所有内容复制进去,保存。

vim命令

1
sudo vim /home/newuser/.ssh/authorized_keys

按i进入编辑模式,粘贴刚才复制的公钥内容
ECS :wq保存退出,或:wq!

6.修改服务器新用户目录权限以及所有权

  1. 为公钥文件和文件夹设置权限。

    1
    2
    chmod 600 /home/newuser/.ssh/authorized_keys
    chmod 700 /home/newuser/.ssh

    chmod命令可设置文件或文件夹的权限,三位数字为linux中的权限代码,介绍及教程:菜鸟教程 Linux chmod命令

  2. /home/newuser文件夹及其子文件夹、子文件所有权移交给git用户。

    ! 漏掉此步骤可能会导致登录新用户时提示/home下该用户目录不存在或者用户不存在导致无法登录

    1
    chown -R newuser:newuser /home/newuser

    chown命令可以变更目录或文件的所有者,-R参数是对子目录及其内的所有文件生效。

尝试进行SSH免密连接

完成以上步骤后,就可以使用SSH免密连接登录到服务器了。在客户端命令行中使用以下命令登录到服务器,将your_server_ip替换成你的服务器IP地址:

1
ssh newuser@your_server_ip

系统将使用您生成的密钥对进行身份验证,若配置成功,无需输入密码即可登录到服务器。

删除用户

在上述步骤中,可以从“sudo”组中删除用户以取消其sudo权限。但是用户仍然存在于系统中。要从 Linux 系统中完全删除用户,请以 root 或 sudo 用户身份登录并运行:

1
sudo deluser <username>

如果要删除用户及其主目录,请运行:

1
sudo deluser -r <username>

若出现userdel: user xxxxx is currently used by process 10997

杀掉该进程即可

1
pkill 10997