在Linux上创建新用户并配置SSH免密连接
本文首发在我的个人博客:追逐日落,欢迎大家前去参观~
为什么要创建新用户?
- 权限控制:每个用户可以被赋予特定的权限,以限制其对系统资源的访问。创建新用户可以根据需要为其分配适当的权限,从而提高系统安全性,即使账户被窃取,也能将损失控制在限定的范围内。
- 隔离环境:通过创建新用户,可以隔离不同用户之间的环境,避免彼此之间的干扰和冲突。
- 跟踪活动:每个用户的活动都可以被追踪和记录,有助于监控系统的安全性和运行情况。
创建新用户的方法
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.修改服务器新用户目录权限以及所有权
-
为公钥文件和文件夹设置权限。
bashchmod 600 /home/newuser/.ssh/authorized_keys chmod 700 /home/newuser/.ssh
chmod 命令可设置文件或文件夹的权限,三位数字为linux中的权限代码,介绍及教程:菜鸟教程 Linux chmod命令。
-
将
/home/newuser
文件夹及其子文件夹、子文件所有权移交给git用户。! 漏掉此步骤可能会导致登录新用户时提示
/home
下该用户目录不存在或者用户不存在导致无法登录bashchown -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