服务器使用秘钥的核心在于生成高强度的密钥对、将公钥精准部署至服务端指定位置,以及配置SSH服务强制启用密钥认证并禁用密码登录,这三步构成了服务器安全访问的闭环,能够有效防御暴力破解攻击,保障数据传输与系统控制权的安全。

密钥认证机制的核心优势
传统的密码认证方式存在明显的安全短板,弱密码容易被暴力破解,强密码又难以记忆且输入繁琐,密钥认证基于非对称加密算法(如RSA或ED25519),由公钥和私钥组成,公钥放置在服务器上,相当于一把锁;私钥保留在客户端,相当于唯一的钥匙,只有持有私钥的用户才能解开公钥锁,由于私钥不在网络中传输,极大降低了泄露风险。
生成高强度密钥对
创建密钥是安全管理的第一步,建议优先选择ED25519算法,其安全性更高且密钥长度更短。
- 打开终端工具
Linux或Mac系统直接使用Terminal,Windows系统可使用PowerShell或Git Bash。 - 执行生成命令
输入命令:ssh-keygen -t ed25519 -C "your_email@example.com"。
参数-t指定算法类型,-C添加注释便于识别密钥归属。 - 设置密钥存储路径
系统默认路径通常为~/.ssh/id_ed25519,直接回车即可使用默认路径,也可自定义路径。 - 配置私钥口令(Passphrase)
为了双重保险,建议设置私钥口令,即使私钥文件被盗,攻击者没有口令也无法使用。 - 确认生成结果
在.ssh目录下会生成两个文件:无后缀的是私钥(需严格保密),.pub后缀的是公钥(需上传至服务器)。
部署公钥至服务器
将公钥上传至服务器是实现免密登录的关键环节,必须确保权限配置正确。

- 使用 ssh-copy-id 命令(推荐)
这是最快捷的方式,命令格式为:ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server_ip。
执行后输入一次服务器密码,系统会自动将公钥内容追加到服务器用户的~/.ssh/authorized_keys文件中,并自动设置好目录权限。 - 手动复制公钥
若本地环境不支持上述命令,需手动操作。- 读取公钥内容:
cat ~/.ssh/id_ed25519.pub。 - 登录服务器:
ssh user@server_ip。 - 创建目录:
mkdir -p ~/.ssh。 - 写入公钥:
echo "公钥内容" >> ~/.ssh/authorized_keys。
- 读取公钥内容:
- 修正文件权限(至关重要)
SSH服务对文件权限极其敏感,权限过宽会导致密钥认证失效。- 设置
.ssh目录权限:chmod 700 ~/.ssh。 - 设置
authorized_keys文件权限:chmod 600 ~/.ssh/authorized_keys。
- 设置
配置SSH服务端参数
公钥部署完成后,必须修改SSH守护进程配置文件,确保服务器优先使用密钥验证。
- 编辑配置文件
使用root权限编辑/etc/ssh/sshd_config文件:sudo vim /etc/ssh/sshd_config。 - 启用公钥认证
找到并取消注释以下行,确保值为yes:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys - 禁用密码登录(核心安全策略)
为了彻底杜绝密码爆破风险,必须在确认密钥登录成功后禁用密码认证。
修改配置项为:PasswordAuthentication no。
注意: 执行此步骤前,请务必新开一个终端窗口测试密钥登录是否成功,避免配置错误导致无法连接服务器。 - 重启SSH服务
配置修改后需重启服务生效:sudo systemctl restart sshd或sudo service sshd restart。
客户端连接与私钥管理
服务器配置完毕后,客户端需正确调用私钥进行连接。
- 直接连接
使用命令ssh -i ~/.ssh/id_ed25519 user@server_ip。-i参数指定私钥文件路径。 - 使用SSH Agent管理密钥
若设置了私钥口令,每次连接输入口令较为繁琐,可使用ssh-add将私钥添加到SSH Agent代理中。- 启动Agent:
eval "$(ssh-agent -s)"。 - 添加私钥:
ssh-add ~/.ssh/id_ed25519。
此后在该终端会话中连接服务器将不再询问口令。
- 启动Agent:
- 配置SSH Config文件
为了简化输入,可在客户端~/.ssh/config文件中配置主机别名。Host myserverHostName server_ipUser userIdentityFile ~/.ssh/id_ed25519
配置完成后,仅需输入ssh myserver即可快速连接。
安全运维最佳实践
掌握 服务器怎么使用秘钥 只是安全建设的第一步,持续的运维管理同样重要。

- 定期轮换密钥
建议每半年或一年更换一次密钥对,防止因长期使用导致私钥意外泄露。 - 禁用Root远程登录
在sshd_config中设置PermitRootLogin no,强制使用普通用户通过密钥登录,必要时再切换至Root,形成安全缓冲。 - 私钥异地备份
私钥一旦丢失将无法恢复访问权限,建议将私钥备份至加密的USB存储设备或安全的密码管理器中,严禁上传至网盘或代码仓库。 - 监控登录日志
定期检查/var/log/secure或/var/log/auth.log,关注是否存在异常的登录尝试,确保安全策略有效落地。
相关问答
问:配置密钥登录后,服务器提示“Permission denied (publickey)”怎么办?
答:这是最常见的错误,通常由权限问题引起,请检查服务器端 .ssh 目录权限是否为 700,authorized_keys 文件权限是否为 600,检查 sshd_config 配置文件中 PubkeyAuthentication 是否开启,以及 AuthorizedKeysFile 路径是否正确,确认SELinux是否开启了限制,可尝试执行 restorecon -R -v ~/.ssh 恢复安全上下文。
问:可以在多台服务器上使用同一个公钥吗?
答:可以,公钥相当于一把锁的“锁芯”,你可以将同一个公钥部署到成百上千台服务器上,只需保管好对应的私钥即可,这种方式便于统一管理,但也要注意私钥的安全性,一旦私钥泄露,所有关联的服务器都将面临风险。
如果您在配置过程中遇到其他问题,或有独特的密钥管理经验,欢迎在评论区留言交流。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/114260.html