在云服务器上配置 SSH 免密登录(基于公钥认证)可以提升安全性和便利性。以下是详细步骤:

1. 本地生成 SSH 密钥对
在 本地机器(你的电脑)生成 RSA/ED25519 密钥对:
# 生成 RSA 密钥(推荐默认) ssh-keygen -t rsa -b 4096 -C "[email protected]" # 或生成更安全的 ED25519 密钥 ssh-keygen -t ed25519 -C "[email protected]"
-
按提示输入保存路径(默认
~/.ssh/id_rsa)和密码(可选,增加安全性)。 -
生成的文件:
-
~/.ssh/id_rsa(私钥,需保密) -
~/.ssh/id_rsa.pub(公钥,上传到服务器)
-
2. 上传公钥到云服务器
方法 1:使用 ssh-copy-id(最简单)
ssh-copy-id -i ~/.ssh/id_rsa.pub username@your_server_ip
-
输入服务器密码后,公钥会自动写入
~/.ssh/authorized_keys。
方法 2:手动上传(适用于无 ssh-copy-id 的环境)
-
复制本地公钥内容:
cat ~/.ssh/id_rsa.pub -
登录服务器,将公钥添加到
~/.ssh/authorized_keys:mkdir -p ~/.ssh echo "粘贴你的公钥" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys # 关键权限设置! chmod 700 ~/.ssh
3. 配置 SSH 客户端(可选优化)
编辑本地 ~/.ssh/config,简化登录命令:
Host myserver
HostName your_server_ip
User username
IdentityFile ~/.ssh/id_rsa
Port 22 # 如果修改了默认端口,需指定
之后只需输入:
ssh myserver
4. 测试免密登录
ssh username@your_server_ip
如果直接登录成功,说明配置正确。
5. 增强安全性(推荐)
5.1 禁用密码登录(仅允许密钥登录)
-
登录服务器,编辑
/etc/ssh/sshd_config:sudo nano /etc/ssh/sshd_config
-
修改以下参数:
PasswordAuthentication no PubkeyAuthentication yes
-
重启 SSH 服务:
sudo systemctl restart sshd
5.2 修改默认 SSH 端口(可选)
在 /etc/ssh/sshd_config 中修改:
Port 2222 # 替换为自定义端口
更新防火墙和安全组规则,放行新端口。
6. 故障排查
-
权限问题:
-
确保服务器上
~/.ssh权限为700,authorized_keys为600。
-
-
连接被拒绝:
-
检查云平台安全组是否放行 SSH 端口(默认 22 或自定义端口)。
-
-
密钥未生效:
-
使用
ssh -v username@server_ip查看详细日志。
-