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

GitHub Actions执行SSH报错"Connection refused",手动连接正常求助

排查GitHub Actions SSH连接被拒绝的问题

以下是针对你遇到的dial tcp ***: connect: connection refused错误的具体排查步骤:

  • 验证Secrets配置准确性
    确认GitHub仓库Secrets中的SSH_HOST、SSH_PORT与手动连接时使用的完全一致,比如端口是否为默认22或自定义端口,主机地址是否为正确的公网IP/域名,避免出现空格、拼写错误。可在Actions流程中临时添加调试步骤(注意不要泄露敏感信息):

    - name: Debug connection info
      run: |
        echo "Target Host: ${{ secrets.SSH_HOST }}"
        echo "Target Port: ${{ secrets.SSH_PORT }}"
    
  • 检查VM防火墙/安全组规则
    手动连接正常说明你的本地IP已被允许,但GitHub Actions运行环境使用的是GitHub动态IP段,需确认VM的安全组(云服务商层面)或服务器防火墙(如iptables/ufw)是否开放SSH端口给GitHub的IP范围:

    • 临时测试可开放SSH端口给所有IP:sudo ufw allow 22/tcp(测试后及时恢复限制)
    • 云服务商安全组需添加GitHub官方公布的IP段,或临时开放端口进行验证
  • 确认SSH服务监听配置
    登录VM检查/etc/ssh/sshd_config文件,确保ListenAddress未设置为仅本地IP(如127.0.0.1),改为0.0.0.0允许所有IP访问后,重启SSH服务:sudo systemctl restart sshd

  • 更换SSH Action稳定版本
    当前使用的appleboy/ssh-action@master为开发分支,可能存在兼容性问题,建议指定稳定版本重试:

    uses: appleboy/ssh-action@v0.1.10
    
  • 测试网络连通性
    在Actions流程中添加telnet/ping步骤,确认网络层面是否可达:

    - name: Test network connectivity
      run: |
        telnet ${{ secrets.SSH_HOST }} ${{ secrets.SSH_PORT }}
    

    若telnet失败,说明网络链路存在阻断,重点排查防火墙、安全组或VM网络配置

内容的提问来源于stack exchange,提问作者Rushil Gupta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 15:15:36