Linux怎么设置 SSH 密钥认证以增强安全性
近期有些网友想要了解的相关情况,小编通过整理给您分享一下。
在当今数字化时代,服务器安全性显得尤为重要。SSH(Secure Shell)作为远程管理服务器的常用工具,其安全性直接关系到服务器的整体防护。传统的密码认证方式虽然简单,但存在被暴力破解的风险。因此,越来越多的管理员选择使用 SSH 密钥认证来增强服务器的安全性。本文将详细介绍如何在 Linux 系统中设置 SSH 密钥认证,帮助你构建更安全的服务器环境。
为什么选择 SSH 密钥认证?

SSH 密钥认证是一种基于非对称加密技术的认证方式。与传统的密码认证相比,它具有以下优势:
- 更高的安全性:密钥对由公钥和私钥组成,私钥存储在本地,公钥上传到服务器。即使公钥被泄露,没有私钥也无法通过认证。
- 防止暴力破解:密钥认证几乎无法被暴力破解,而密码认证则容易成为攻击目标。
- 自动化操作友好:在自动化脚本或 CI/CD 流程中,密钥认证比密码认证更便捷。
如何在 Linux 中设置 SSH 密钥认证?
1. 生成 SSH 密钥对
首先,在本地计算机上生成 SSH 密钥对。打开终端,输入以下命令:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
-t rsa
:指定密钥类型为 RSA。-b 4096
:指定密钥长度为 4096 位,安全性更高。-C
:添加注释,通常使用邮箱地址作为标识。
系统会提示你选择密钥保存路径和设置密码。默认情况下,密钥会保存在 ~/.ssh/id_rsa
(私钥)和 ~/.ssh/id_rsa.pub
(公钥)中。
2. 将公钥上传到服务器
生成密钥对后,需要将公钥上传到服务器。使用以下命令将公钥复制到服务器的 ~/.ssh/authorized_keys
文件中:
ssh-copy-id -i ~/.ssh/id_rsa.pub user@your_server_ip
如果 ssh-copy-id
不可用,可以手动将公钥内容添加到服务器的 ~/.ssh/authorized_keys
文件中:
cat ~/.ssh/id_rsa.pub | ssh user@your_server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
3. 配置 SSH 服务器
为了确保服务器仅允许密钥认证,需要修改 SSH 服务器的配置文件。使用以下命令打开配置文件:
sudo nano /etc/ssh/sshd_config
找到以下配置项并进行修改:
PubkeyAuthentication yesPasswordAuthentication no
保存并退出后,重启 SSH 服务以应用更改:
sudo systemctl restart sshd
4. 测试 SSH 密钥认证
完成配置后,尝试使用 SSH 密钥登录服务器:
ssh user@your_server_ip
如果一切正常,系统会直接登录,无需输入密码。如果需要输入私钥密码,请确保私钥密码已正确设置。
常见问题及解决方法
1. 无法通过密钥认证登录
- 检查公钥是否已正确添加到服务器的
~/.ssh/authorized_keys
文件中。 - 确保
~/.ssh
目录和authorized_keys
文件的权限正确:chmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keys
2. 私钥密码忘记了怎么办?
私钥密码无法找回,只能重新生成密钥对并重新配置。
3. 如何禁用 SSH 密码认证?
在 /etc/ssh/sshd_config
文件中,将 PasswordAuthentication
设置为 no
即可。
进一步优化 SSH 安全性
除了使用 SSH 密钥认证,还可以采取以下措施进一步提升服务器安全性:
- 更改默认 SSH 端口:将默认的 22 端口更改为其他端口,减少被扫描的风险。
- 启用防火墙:使用
ufw
或iptables
限制 SSH 端口的访问来源。 - 使用 Fail2Ban:安装 Fail2Ban 工具,自动封禁多次登录失败的 IP 地址。
结语
通过设置 SSH 密钥认证,你可以显著提升 Linux 服务器的安全性,减少被攻击的风险。无论是个人服务器还是企业级应用,密钥认证都是一种简单而有效的安全措施。希望本文的步骤和技巧能帮助你更好地保护你的服务器。如果你有其他问题或建议,欢迎在评论区留言讨论!
推荐阅读
-
使用 Linuxssh-keygen 命令生成和管理 SSH 密钥
-
Linux主机跳转命令:轻松管理多台服务器
-
Linux中如何配置和使用 SSH 远程登录
-
gen9服务器安装windows
近期有些网友想要了解gen9服务器安装windows的相关情况,小编通过整理给您分享一下。Gen9服务器安装Windows前的准备...
-
详解如何通过SSH通道来访问MySQL
许多时候当要使用MySQL时,会遇到如下情况:1.信息比较重要,希望通信被加密。2.一些端口,比如3306端...
-
实战:阿里云linux搭建PHP环境
-
Linux中怎么查看SSH的版本
Linux中怎么查看SSH的版本这篇文章主要介绍了Linux中怎么...
-
如何进行Linux系统SSH服务中的sshkey密钥认证实战
如何进行Linux系统SSH服务中的sshkey密钥认证实战如何进...
-
如何进行Java开发中ZooKeeper的SSH免密登录
如何进行Java开发中ZooKeeper的SSH免密登录这篇文章将...
-
如何在CentOS7中安装和配置ssh
如何在CentOS7中安装和配置ssh本篇内容主要讲解“如何在Ce...