You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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 ~/.ssh
    
    输出应为drwx------(权限值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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 03:11:01