Debian 12 创建新用户仅允许 SSH 密钥登录并禁止 root 直接登录

最近购买了一台 VPS,服务商给的控制台可以一键安装各类 Linux 发行版,我自己选择安装了 Debian12,但默认使用 root 用户和密码直接进行登录,个人认为不安全也不方便并且服务商的控制台无法直接修改调整,只能手动进服务器手动配置了。

1、创建新用户

本文示例中用 abc123 来作为新用户名,实际使用中请自行修改为你自己的真实用户名。

部分 VPS 厂商预装的系统可能没有 sudovim 请先安装,后面需要用到,安装命令如下:

apt-get update
apt-get install sudo    #安装sudo
apt-get install vim     #安装vim

创建 abc123 用户

sudo adduser abc123  #创建abc123

执行上面的命令后会提示设置用户密码,这里我们可以先按照提示设置,后续会禁用密码登录,输入两遍密码后其它的设置项可以留空直接回车跳过即可。

2、配置 SSH 密钥登录

在本地机器生成密钥对​

如果尚未生成,已经生成过的用户可以直接跳过,如下命令在 Windows 或 MacOS 终端执行,执行后会生成两个文件,一个是 id_ed16618 另一个是 id_ed16618.pub (通常在 .ssh 文件夹可找到):

ssh-keygen -t ed16618 -C "abc123@debian12"

将公钥添加到服务器

ssh-copy-id -i ~/.ssh/id_ed16618.pub abc123@服务器IP

或手动将公钥内容添加到~/.ssh/authorized_keys并设置权限(注意将 abc123 改为你的真实用户名):

sudo mkdir -p /home/abc123/.ssh
sudo chmod 700 /home/abc123/.ssh
sudo cp /path/to/public_key.pub /home/abc123/.ssh/authorized_keys    #/path/to/public_key.pub  是你的id_ed16618.pub 文件和所在路径
sudo chmod 600 /home/abc123/.ssh/authorized_keys
sudo chown -R abc123:abc123 /home/abc123/.ssh

3、修改 SSH 配置

编辑 SSH 配置文件:

sudo vi /etc/ssh/sshd_config

进行以下更改:

禁止root直接登录​​:

PermitRootLogin no

启用密钥认证​​(确保以下行未被注释):

PubkeyAuthentication yes

​针对 abc123 用户禁用密码登录​​:

PasswordAuthentication no

4、重启SSH服务

sudo systemctl restart ssh

5、允许新用户 abc123 提权到 root

将用户添加到sudo组:

sudo usermod -aG sudo abc123

如果需要修改 root 用户的密码请执行:

passwd