SSH 密钥登录与安全加固教程:告别密码,更安全更省心
摘要
密码登录容易被暴力破解,改用 SSH 密钥登录既免密又安全。本教程依据 OpenSSH 官方手册,详细介绍 ssh-keygen 生成 Ed25519 密钥对、ssh-copy-id 上传公钥、测试登录,以及关闭密码登录、禁止 root 直连、修改默认端口等安全加固措施。
SSH 密钥登录与安全加固教程:告别密码,更安全更省心
SSH(Secure Shell)是远程登录服务器最常用的协议。默认情况下,很多人习惯用"密码登录",但密码很容易被暴力破解。改用密钥登录不仅能免密登录,安全性也大幅提升。
本文内容依据 OpenSSH 官方手册(ssh(1)、sshd_config(5))整理。
一、SSH 登录的两种方式
密码登录:输入用户名 + 密码。简单,但存在被暴力破解的风险。
密钥登录:使用一对"私钥 + 公钥"进行认证。私钥留在自己电脑,公钥放到服务器上。登录时无需输密码,安全性更高。
推荐用密钥登录,并逐步关闭密码登录。
二、生成密钥对
在你自己的电脑(客户端)上生成密钥对:
命令说明:
-t ed25519:使用 Ed25519 算法(现代、安全、密钥短,推荐)-C "备注":加一段注释,方便辨认,通常写邮箱
执行后会提示:
保存路径:直接回车,默认保存到
~/.ssh/id_ed25519设置密码短语(passphrase):可以回车留空(免密),也可以设置一个密码短语增强私钥安全
如果你的服务器或客户端较老,不支持 Ed25519,可以用传统的 RSA:
bash
生成后,~/.ssh/ 目录下会有两个文件:
id_ed25519:私钥(务必保密,不要上传、不要发给任何人)id_ed25519.pub:公钥(可以公开,放到服务器上)
三、把公钥上传到服务器
使用 ssh-copy-id 一键把公钥安装到服务器(首次会要求输入一次服务器密码):
执行后,公钥会被追加到服务器上对应用户的 ~/.ssh/authorized_keys 文件中。
如果你的服务器 SSH 端口不是默认 22,可以这样指定:
如果系统没有
ssh-copy-id命令,可以手动复制:把本地id_ed25519.pub的内容追加到服务器~/.ssh/authorized_keys文件里。
四、测试密钥登录
上传完成后,直接 SSH 登录测试:
如果无需输入密码(或只需输入密钥的 passphrase)就登录成功,说明配置完成。
五、查看公钥内容
如果需要手动复制公钥,用下面的命令查看:
输出的内容类似:
把这一整行内容放进服务器的 ~/.ssh/authorized_keys 即可。
六、安全加固:修改服务器配置
登录服务器后,用 root 权限编辑 SSH 服务配置:
1. 关闭密码登录
找到(或添加)这一行:
设置成 no 后,只能通过密钥登录,彻底杜绝密码暴力破解。
2. 禁止 root 直接登录
禁止 root 直接登录,日常用普通用户 + sudo 提权,更安全。
3. 修改默认端口(可选)
把默认的 22 改成别的端口,可以避开大量自动扫描(改了之后登录要加 -p 2222)。
重要提醒:在关闭密码登录、禁止 root 登录之前,务必先确认你的密钥登录已经能正常使用,否则改完自己就登录不进去了。
修改完后保存,重启 SSH 服务使配置生效:
七、客户端简化登录(Config 文件)
如果经常登录同一台服务器,可以编辑本地 ~/.ssh/config,用别名简化登录:
之后只需输入:
即可一键登录。
八、总结
步骤 | 命令/配置 |
|---|---|
生成密钥 |
|
上传公钥 |
|
测试登录 |
|
关闭密码登录 |
|
禁止 root 登录 |
|
密钥登录是服务器安全的第一步:用公钥私钥对替代弱密码,再配合关闭密码登录、禁止 root 直连,能让服务器的安全性提升一个档次。改配置前务必先确认密钥能正常登录,避免把自己锁在门外。
相关文章
暂无相关文章
