在 Debian 12 上禁用密码登录并配置 SSH 密钥登录(使用 ed25519)
1: 生成 SSH 密钥对
首先,在本地机器上生成一个 ed25519 类型的 SSH 密钥对。打开终端并执行以下命令:
ssh-keygen -t ed25519 -C "[email protected]"
-t ed25519
指定生成 ed25519 密钥。-C
用于添加一个注释,通常使用电子邮件或用户名。
系统会提示你选择密钥存储的位置:
Enter file in which to save the key (/home/your_user/.ssh/id_ed25519):
你可以直接按回车选择默认位置,也可以指定一个不同的文件名。接着会要求输入一个密码来保护私钥(可以选择为空)。
2: 将公钥复制到 Debian 12 服务器
将生成的公钥复制到 Debian 12 服务器上。在本地机器上执行以下命令:
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@your_debian_server_ip
~/.ssh/id_ed25519.pub
是你生成的公钥路径。user@your_debian_server_ip
是你 Debian 12 服务器的用户名和 IP 地址。
该命令会将公钥复制到目标服务器的 ~/.ssh/authorized_keys
文件中,确保你可以使用私钥登录服务器。
3: 禁用密码登录
登录到 Debian 12 服务器(假设你已经能够通过密钥登录),然后修改 SSH 配置文件来禁用密码登录。
- 打开
/etc/ssh/sshd_config
配置文件:sudo nano /etc/ssh/sshd_config
- 查找以下两行并修改或确保它们如下所示:
PasswordAuthentication no ChallengeResponseAuthentication no
这些设置将禁用密码认证和挑战响应认证。 - 确保以下行未被注释掉,并设置为
yes
:PubkeyAuthentication yes
- 保存文件并退出编辑器(在 nano 中按
CTRL + X
,然后按Y
保存更改)。
4: 重新启动 SSH 服务
修改配置文件后,需要重新启动 SSH 服务以使更改生效:
sudo systemctl restart sshd
5: 测试 SSH 密钥登录
在本地机器上,尝试使用 SSH 密钥登录到服务器:
ssh -i ~/.ssh/id_ed25519 user@your_debian_server_ip
如果成功登录且没有要求输入密码,说明密钥认证配置成功。
6: 确保只有密钥登录
为了进一步加强安全性,你可以尝试使用 SSH 密码登录进行连接。应该会被拒绝,确保只有密钥能够登录。
发表回复