编辑
2024-12-11
技术杂谈
00
请注意,本文编写于 42 天前,最后修改于 33 天前,其中某些信息可能已经过时。

目录

生成 SSH 公私密钥对
将公钥添加到服务器
配置 SSH 服务只允许密钥登录
下载私钥到本地
测试密钥登录

如何在 Ubuntu 上设置密钥登录并禁用密码以提高服务器安全性

在安全管理中,SSH 密钥认证比密码登录更安全且便利,下面将指导你如何配置 Ubuntu 的 SSH 服务,启用密钥登录并禁用密码登录。

生成 SSH 公私密钥对

在本地或服务器上生成密钥文件。如果是本地生成,需要将密钥上传到服务器。

shell
ssh-keygen
  • 按回车接受默认路径(/root/.ssh/id_rsa)。
  • 系统会生成一个 私钥文件(id_rsa) 和对应的 公钥文件(id_rsa.pub)

将公钥添加到服务器

将生成的公钥内容添加到服务器的 ~/.ssh/authorized_keys 文件中。

shell
cat /root/.ssh/id_rsa.pub

复制输出内容(以 ssh-rsa AAAA 开头)到服务器并写入文件:

shell
vim ~/.ssh/authorized_keys

修改 authorized_keys 文件权限,以避免安全隐患:

shell
chmod 600 ~/.ssh/authorized_keys

配置 SSH 服务只允许密钥登录

备份 SSH 配置文件:

shell
cd /etc/ssh/

将默认文件备份一份

shell
cp sshd_config sshd_config.bak

清空文件内容

shell
echo "" > sshd_config

编辑配置文件

shell
vim sshd_config

替换其内容为以下配置

text
# 必要设置 KbdInteractiveAuthentication no UsePAM yes X11Forwarding yes PrintMotd no AcceptEnv LANG LC_* Subsystem sftp /usr/lib/openssh/sftp-server # 最大密码尝试次数 MaxAuthTries 6 # 开启 Root 登录,仅限密钥 PermitRootLogin without-password # 禁用密码登录 PasswordAuthentication no # 密钥相关设置 PubkeyAcceptedKeyTypes +ssh-rsa RSAAuthentication yes PubkeyAuthentication yes # 确保只有密钥可以认证 AuthenticationMethods publickey

保存后重启 SSH 服务:

shell
systemctl restart sshd

下载私钥到本地

将生成的私钥文件 (id_rsa) 下载到本地机器,并注意文件权限配置:

  • Windows:将私钥内容复制到本地文件 id_rsa 中保存。

  • macOS/Linux:在目标主机设置权限:

shell
chmod 400 ~/.ssh/id_rsa

测试密钥登录

本地测试 SSH 登录命令:

shell
ssh root@your_server_ip -i ~/.ssh/id_rsa

如果提示 Permission denied (publickey),说明密码方式已禁用,只能使用密钥登录,设置成功。

注意

  1. 在禁用密码登录前,请确保可以通过密钥成功登录。
  2. id_rsa 是高度敏感文件,务必妥善保管,不可泄露。

以上是完整操作流程,一旦配置成功,无需担心暴力破解密码攻击,服务器的安全性将大大提高!

本文作者:Freed

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!