如何安全地禁止VPS密码登录?
| 操作步骤 |
主要内容 |
相关工具 |
| 生成SSH密钥对 |
在本地计算机创建公钥和私钥 |
ssh-keygen命令 |
| 上传公钥到VPS |
将公钥添加到服务器的授权文件中 |
ssh-copy-id命令或手动上传 |
| 配置SSH服务 |
修改sshdconfig文件禁用密码登录 |
vi/vim编辑器 |
| 重启SSH服务 |
使配置生效 |
systemctl命令 |
VPS如何禁用密码登录?详细步骤与常见问题解答
主要操作步骤
| 步骤 |
操作内容 |
所需工具 |
| 1 |
生成SSH密钥对 |
ssh-keygen命令 |
| 2 |
上传公钥到服务器 |
ssh-copy-id命令 |
| 3 |
配置SSH服务参数 |
文本编辑器 |
| 4 |
重启SSH服务 |
系统服务管理命令 |
详细操作流程
步骤一:生成SSH密钥对
操作说明:在本地计算机上生成RSA密钥对,包括公钥和私钥。
使用工具提示:使用终端或命令行工具执行ssh-keygen命令。
# 生成4096位的RSA密钥对
ssh-keygen -t rsa -b 4096 -C "youremail@example.com"
系统会提示以下信息:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/idrsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
步骤二:上传公钥到VPS
操作说明:将生成的公钥上传到VPS的授权密钥文件中。
使用工具提示:使用ssh-copy-id命令或手动上传。
# 使用ssh-copy-id自动上传
ssh-copy-id -i ~/.ssh/idrsa.pub username@yourserverip
或者手动操作:
1. 在服务器上创建.ssh目录(如果不存在)
mkdir -p ~/.ssh
2. 设置正确的目录权限
chmod 700 ~/.ssh
3. 将公钥内容添加到authorized
keys文件
echo "ssh-rsa AAAA..." >> ~/.ssh/authorizedkeys
4. 设置正确的文件权限
chmod 600 ~/.ssh/authorizedkeys
步骤三:配置SSH服务参数
操作说明:修改SSH服务的配置文件,禁用密码登录并启用密钥认证。
使用工具提示:使用vi、vim或nano等文本编辑器。
# 编辑SSH配置文件
sudo vi /etc/ssh/sshdconfig
需要修改的关键参数:
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin without-password
步骤四:重启SSH服务
操作说明:重新启动SSH服务使配置生效。
使用工具提示:使用systemctl或service命令。
# CentOS 7/8, Ubuntu 16.04+
sudo systemctl restart sshd
CentOS 6
sudo service sshd restart
常见问题及解决方案
| 问题 |
原因 |
解决方案 |
| SSH连接被拒绝,无法登录 |
密钥文件权限设置不正确 |
检查.ssh目录权限为700,authorizedkeys文件权限为600 |
| 修改配置后无法连接VPS |
配置文件语法错误或参数设置错误 |
保持一个活跃的SSH连接,逐步测试配置 |
| 公钥认证失败 |
服务器未正确识别公钥 |
确认公钥已正确添加到authorized_keys文件 |
| 忘记设置密钥密码 |
生成密钥时未设置密码 |
重新生成密钥对并设置密码 |
| 主机密钥验证失败 |
服务器密钥发生变化 |
使用ssh-keygen -R命令删除旧密钥记录 |
完成以上步骤后,你的VPS将只允许通过SSH密钥进行登录,大大提高了服务器的安全性。在进行最终配置前,建议先测试密钥登录是否正常工作,确保不会因为配置错误而失去对服务器的访问权限。
发表评论