在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
相关推荐
热爱嵌入式的小许9 分钟前
Linux基础项目开发1:量产工具——显示系统
linux·运维·服务器·韦东山量产工具
韩楚风4 小时前
【linux 多进程并发】linux进程状态与生命周期各阶段转换,进程状态查看分析,助力高性能优化
linux·服务器·性能优化·架构·gnu
陈苏同学4 小时前
4. 将pycharm本地项目同步到(Linux)服务器上——深度学习·科研实践·从0到1
linux·服务器·ide·人工智能·python·深度学习·pycharm
Ambition_LAO4 小时前
解决:进入 WSL(Windows Subsystem for Linux)以及将 PyCharm 2024 连接到 WSL
linux·pycharm
Pythonliu74 小时前
茴香豆 + Qwen-7B-Chat-Int8
linux·运维·服务器
你疯了抱抱我4 小时前
【RockyLinux 9.4】安装 NVIDIA 驱动,改变分辨率,避坑版本。(CentOS 系列也能用)
linux·运维·centos
追风赶月、4 小时前
【Linux】进程地址空间(初步了解)
linux
栎栎学编程4 小时前
Linux中环境变量
linux
挥剑决浮云 -5 小时前
Linux 之 安装软件、GCC编译器、Linux 操作系统基础
linux·服务器·c语言·c++·经验分享·笔记
小O_好好学6 小时前
CentOS 7文件系统
linux·运维·centos