正确配置SSH密钥和authorized_keys可实现免密登录并提升安全性。首先使用ssh-keygen生成RSA或Ed25519密钥对,私钥本地安全保存并设置强密码,公钥通过ssh-copy-id或手动方式添加至服务器~/.ssh/authorized_keys文件。确保该文件权限为600,.ssh目录为700,属主正确。可在authorized_keys中添加from、command、no-pty等选项限制密钥使用范围,增强安全性。定期清理无效密钥,记录用途,避免共用账户。结合sshd_config禁用密码登录、启用公钥认证、限制用户访问,重启SSH服务生效。合理管理密钥与权限设置是保障安全的关键。

在Linux系统中,SSH密钥认证是一种比密码登录更安全、更便捷的身份验证方式。通过正确配置
authorized_keys文件,可以实现免密登录并提升服务器安全性。以下是关于如何管理SSH密钥以及配置
authorized_keys的实用指南。
生成和管理SSH密钥对
用户需要在本地生成SSH密钥对,包含私钥和公钥。私钥保存在本地,公钥则添加到服务器的
authorized_keys文件中。
使用
ssh-keygen命令生成密钥:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
生成RSA 4096位密钥- 或使用更现代的Ed25519算法:
ssh-keygen -t ed25519 -C "your_email@example.com"
- 密钥默认保存在
~/.ssh/id_rsa
(私钥)和~/.ssh/id_rsa.pub
(公钥)
建议为密钥设置强密码(passphrase),以增加安全性。可以使用
ssh-agent缓存解密后的私钥,避免重复输入密码。
配置 authorized_keys 文件
authorized_keys文件位于用户家目录的
~/.ssh/authorized_keys,每行存放一个被信任的公钥。
将本地公钥内容复制到该文件中:
- 手动复制:
cat ~/.ssh/id_rsa.pub | ssh user@server "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
- 使用工具:
ssh-copy-id user@server
可自动完成上传
确保文件权限正确,否则SSH会拒绝读取:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
- 确认文件所属用户正确:
chown $USER:$USER ~/.ssh -R
错误的权限是导致密钥登录失败的常见原因。
增强 authorized_keys 的高级配置
可以在
authorized_keys中为每条公钥添加选项,限制其使用方式,提高安全性。
格式为:
选项 公钥类型 公钥内容
from="192.168.1.100"
:仅允许来自指定IP的连接command="backup_script.sh"
:强制执行特定命令,常用于自动化脚本no-pty
:禁止分配TTY,防止交互式shellno-port-forwarding,no-X11-forwarding,no-agent-forwarding
:禁用转发功能
例如:
command="~/scripts/backup.sh",no-pty,no-port-forwarding ssh-rsa AAAAB3NzaC... user@local这种配置适合部署自动化任务,避免密钥被滥用。
维护和安全管理建议
定期审查
authorized_keys中的公钥,删除不再使用的条目。
- 记录每个公钥的用途和添加时间(可在公钥末尾加注释)
- 避免多个用户共用同一个系统账户,应为每个用户创建独立账户
- 考虑使用SSH证书或集中密钥管理方案(如Hashicorp Vault)用于大规模环境
- 禁用密码登录后,确保至少保留一个可用密钥,防止被锁定
可通过
sshd_config进一步加固SSH服务:
PubkeyAuthentication yes
(确保启用)PasswordAuthentication no
(禁用密码登录)AllowUsers user1 user2
(限制可登录用户)
修改后重启SSH服务:
sudo systemctl restart sshd
基本上就这些。合理管理SSH密钥和正确配置
authorized_keys,能显著提升系统安全性和运维效率。不复杂但容易忽略权限和备份。










