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

AWS跨区域免费版Ubuntu服务器SSH连接超时与权限拒绝问题求助

解决AWS跨区域Ubuntu服务器SSH连接超时&权限拒绝问题

我之前也碰到过类似的跨区域AWS实例连接问题,结合你给出的错误信息,咱们一步步来排查解决:

一、先搞定SSH连接超时(Connection timed out)

这个是最核心的问题,连不上服务器的话,公钥部署自然也会失败。主要排查这几点:

  • 检查目标实例的安全组入站规则
    AWS安全组是第一道关卡!你得确保目标服务器(172.31.94.158)的安全组允许来自源服务器的SSH请求:

    1. 登录AWS控制台,找到目标实例对应的安全组
    2. 添加一条入站规则:协议选SSH(TCP 22),源地址填源服务器的公网IP/32(如果你们用公网连接);如果是跨VPC的场景,得先建立VPC peering,然后把源VPC的CIDR作为源地址
    3. 顺便确认下源服务器的出站规则,默认安全组一般允许所有出站,但最好确认下TCP 22端口是开放的
  • 注意跨区域私有IP的限制
    你用的172.31.94.158是私有IP对吧?不同AWS区域的VPC私有IP段是完全独立的,默认情况下跨区域私有IP是无法直接访问的!如果你们没有配置VPC peering或者VPN,得改用目标实例的公网IP来连接。

  • 确认目标实例状态正常
    去AWS控制台看看目标实例是不是处于running状态,系统检查有没有报错,比如实例有没有被冻结(免费层资源不足的话偶尔会出现)。

二、解决ssh-copy-id的权限拒绝(Permission denied (publickey))

等SSH连接能通之后,如果还是碰到这个错误,按下面步骤来:

  • 先确认源服务器有SSH密钥对
    执行ls ~/.ssh/看看有没有id_rsa和id_rsa.pub文件,如果没有,先生成一对:

    ssh-keygen -t rsa -b 4096
    

    一路回车就行,不用设密码(方便后续Ansible自动连接)。

  • 确保目标服务器允许公钥登录
    先手动用密码登录目标服务器(如果还能登的话),修改SSH配置:

    1. 编辑配置文件:
      sudo nano /etc/ssh/sshd_config
      
    2. 确保这几项是开启的:
      PubkeyAuthentication yes
      AuthorizedKeysFile      .ssh/authorized_keys .ssh/authorized_keys2
      PasswordAuthentication yes # 先开着密码登录,等公钥部署完再关掉更安全
      
    3. 重启SSH服务生效:
      sudo systemctl restart sshd
      
  • 正确执行ssh-copy-id命令
    要指定公钥文件,并且用目标实例的公网IP(如果跨区域没VPC peering的话):

    ssh-copy-id -i ~/.ssh/id_rsa.pub ubuntu@<目标实例的公网IP>
    

    输入目标服务器ubuntu用户的密码,就能把公钥部署到目标服务器的~/.ssh/authorized_keys里了。

三、Ansible连接问题收尾

等SSH能正常免密登录后,Ansible的ping模块就能工作了。检查你的inventory文件(比如hosts),确保配置正确:

[webserver]
<目标实例IP> ansible_user=ubuntu ansible_ssh_private_key_file=/home/ubuntu/.ssh/id_rsa

然后再执行sudo ansible webserver -m ping,应该就能成功了。

内容的提问来源于stack exchange,提问作者srinivasu vallabhadasu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:32:57