SSH密钥认证是Linux服务器最安全远程管理方式,需启用SSHD服务、生成ed25519密钥对、部署公钥至authorized_keys、禁用密码登录,并可通过ssh-config简化连接。

Linux服务器远程管理最常用、最安全的方式就是SSH,而密钥认证比密码登录更可靠、更高效。只要配置正确,一次设置长期受益,还能有效防止暴力破解。
启用并检查SSH服务
大多数Linux发行版默认已安装OpenSSH服务,但未必开机自启。先确认服务状态:
- 运行 systemctl status sshd(CentOS/RHEL)或 systemctl status ssh(Ubuntu/Debian)查看是否运行
- 若未启动,执行 systemctl start sshd 并设为开机自启:systemctl enable sshd
- 防火墙需放行22端口(或你自定义的SSH端口),例如:ufw allow 22 或 firewall-cmd --permanent --add-port=22/tcp
生成并部署SSH密钥对
密钥认证的核心是“本地私钥 + 服务器公钥”配对。不要在服务器上生成密钥,应在你日常使用的终端(如Mac或Windows的WSL)中操作:
- 执行 ssh-keygen -t ed25519 -C "your_email@example.com"(推荐ed25519算法,速度快且安全性高)
- 按回车接受默认路径(~/.ssh/id_ed25519),可选设密钥口令(passphrase)增强本地防护
- 用 ssh-copy-id user@server_ip 自动将公钥(id_ed25519.pub)追加到服务器的 ~/.ssh/authorized_keys 中
- 若 ssh-copy-id 不可用,可手动复制公钥内容,登录服务器后粘贴进 ~/.ssh/authorized_keys,注意权限设为600:chmod 600 ~/.ssh/authorized_keys
禁用密码登录,强化安全
密钥就绪后,应关闭密码认证,彻底杜绝暴力尝试。编辑服务器上的SSH主配置文件:
- 运行 sudo nano /etc/ssh/sshd_config
- 找到并修改两行:
PasswordAuthentication no
PermitRootLogin no(禁止root直接登录,推荐用普通用户+sudo) - 保存后重启服务:sudo systemctl restart sshd
- ⚠️ 操作前务必确保当前密钥已验证可用(新开一个终端测试登录),避免被锁在外
进阶建议:提升便捷性与可维护性
日常使用中,几个小调整能让SSH更顺手:
- 在本地 ~/.ssh/config 中添加主机别名,例如:
Host myserver
HostName 192.168.1.100
User admin
IdentityFile ~/.ssh/id_ed25519
之后只需输入 ssh myserver 即可连接 - 考虑修改默认端口(如改为2222),虽不能替代密钥,但能减少扫描日志干扰;记得同步更新防火墙和sshd_config中的 Port 配置
- 定期轮换密钥:删除旧公钥、生成新密钥对、重新部署,尤其当本地设备丢失或人员变动时










