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端口给所有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
相关产品推荐
相关产品推荐

