将服务器更改为密钥登录(SSH Key Authentication)是提高服务器安全性的最佳实践之一。它不仅比密码更安全(防止暴力破解),而且登录也更方便。
第一步:在本地机器生成密钥对
如果你还没有密钥对,请在你的本地电脑(Windows PowerShell、Mac 或 Linux 终端)上运行以下命令:
ssh-keygen -t rsa -b 4096提示: 系统会询问保存路径(默认即可)和密码短语(Passphrase)。密码短语是给私钥加的二次锁,建议设置。
执行完成后,你会得到两个文件:
id_rsa(私钥:绝对不能泄露给任何人!)
id_rsa.pub(公钥:要上传到服务器的文件)
第二步:将公钥上传到服务器
你需要将本地生成的 id_rsa.pub 内容复制到服务器上的 ~/.ssh/authorized_keys 文件中。
方法 A:使用 ssh-copy-id(最推荐,最简单)
在本地终端输入:
ssh-copy-id 用户名@服务器IP输入一次服务器密码后,公钥会自动安装完成。
方法 B:手动复制(如果方法 A 不可用)
在本地查看并复制公钥内容:cat ~/.ssh/id_rsa.pub
登录服务器,执行:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "你的公钥字符串" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys第三步:测试密钥登录
在进行后续高风险操作前,请先验证密钥是否生效:
ssh 用户名@服务器IP如果无需输入服务器密码(或只需输入你设置的私钥密码短语)即可登录,说明设置成功。
第四步:禁用密码登录(安全加固)
确认密钥登录成功后,你可以关闭密码登录以彻底杜绝暴力破解。
编辑 SSH 配置文件:
sudo nano /etc/ssh/sshd_config
修改以下关键参数(如果前面有 # 号请去掉):
Plaintext
PubkeyAuthentication yes # 允许公钥登录
PasswordAuthentication no # 禁止密码登录
ChallengeResponseAuthentication no
UsePAM no # 如果你不需要通过 PAM 认证
重启 SSH 服务:
sudo systemctl restart ssh
评论 (0)