EC2实例间复制SSH公钥提示Permission denied (publickey)的解决方法
解决EC2实例间SSH公钥复制Permission denied(publickey)问题
1. 验证目标EC2实例的SSH服务配置
- 通过AWS控制台Session Manager或其他可用方式登录目标实例,编辑SSH配置文件:
sudo nano /etc/ssh/sshd_config - 确认以下配置项未被注释且值正确:
PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2 - 重启SSH服务使配置生效:
sudo systemctl restart sshd
2. 检查源实例的SSH公钥有效性
- 查看源实例的公钥内容,确保格式正确(开头为
ssh-rsa或对应算法前缀,结尾为用户名@主机名,无多余空格/换行):cat ~/.ssh/id_rsa.pub - 如果公钥格式异常,重新生成:
执行过程中按回车使用默认配置即可。ssh-keygen -t rsa -b 4096
3. 无复制粘贴的公钥写入方法
在源实例执行以下命令(替换<目标实例IP>为实际的公网/私有IP),直接将公钥写入目标实例的授权文件:
cat ~/.ssh/id_rsa.pub | ssh ubuntu@<目标实例IP> "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"
这条命令会自动完成:创建.ssh目录(若不存在)、追加公钥到授权文件、设置目录和文件的正确权限(权限错误是公钥认证失败的常见原因)。
4. 确认目标实例的权限设置
登录目标实例,检查关键目录和文件的权限:
- 查看
.ssh目录权限:
输出应为ls -ld ~/.sshdrwx------(权限值700)。 - 查看
authorized_keys文件权限:
输出应为ls -l ~/.ssh/authorized_keys-rw-------(权限值600)。 - 若权限不符,执行以下命令修正:
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
5. 检查EC2安全组规则
- 目标实例的安全组需允许源实例的IP/IP段访问22端口(SSH入站规则)。
- 源实例的安全组需允许出站访问22端口到目标实例的IP/IP段。
6. 测试SSH连接
在源实例执行以下命令验证是否能成功登录:
ssh ubuntu@<目标实例IP>
内容的提问来源于stack exchange,提问作者Vikunth Perla
相关产品推荐
相关产品推荐

