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

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

本文首发在我的个人博客:追逐日落,欢迎大家前去参观~

为什么要创建新用户?

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

创建新用户的方法

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

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

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

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

复制代码
sudo useradd newuser

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

2. 设置用户密码

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

复制代码
sudo passwd newuser

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

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

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

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

复制代码
sudo adduser newuser sudo

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

复制代码
sudo deluser newuser sudo

(较为麻烦)修改sudoers文件

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

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

bash 复制代码
# 执行
sudo vim /etc/sudoers

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

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

css 复制代码
newuser ALL=(ALL) ALL

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

输入英文状态下的冒号:

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

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

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

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

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

bash 复制代码
sudo -l -U <username>
# 例如
# sudo -l -U newuser

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

ruby 复制代码
匹配 %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密钥对:

arduino 复制代码
ssh-keygen -t rsa -C "填入邮箱"

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

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

5. 将公钥复制到服务器

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

vim命令

arduino 复制代码
sudo vim /home/newuser/.ssh/authorized_keys

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

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

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

    bash 复制代码
    chmod 600 /home/newuser/.ssh/authorized_keys
    chmod 700 /home/newuser/.ssh

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

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

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

    bash 复制代码
    chown -R newuser:newuser /home/newuser

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

尝试进行SSH免密连接

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

css 复制代码
ssh newuser@your_server_ip

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

删除用户

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

xml 复制代码
sudo deluser <username>

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

xml 复制代码
sudo deluser -r <username>

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

杀掉该进程即可

复制代码
pkill 10997
相关推荐
cg501720 小时前
Spring Boot 的配置文件
java·linux·spring boot
暮云星影21 小时前
三、FFmpeg学习笔记
linux·ffmpeg
rainFFrain21 小时前
单例模式与线程安全
linux·运维·服务器·vscode·单例模式
GalaxyPokemon21 小时前
Muduo网络库实现 [九] - EventLoopThread模块
linux·服务器·c++
mingqian_chu1 天前
ubuntu中使用安卓模拟器
android·linux·ubuntu
GalaxyPokemon1 天前
Muduo网络库实现 [十] - EventLoopThreadPool模块
linux·服务器·网络·c++
自由鬼1 天前
开源虚拟化管理平台Proxmox VE部署超融合
linux·运维·服务器·开源·虚拟化·pve
瞌睡不来1 天前
(学习总结32)Linux 基础 IO
linux·学习·io
inquisiter1 天前
UEFI镜像结构布局
linux·spring