本地Ubuntu SSH连接正常,GitHub Actions远程SSH遇I/O超时问题求助
解决GitHub Actions远程SSH超时问题
排查与解决步骤
1. 检查远程主机防火墙/安全组规则
本地能连接是因为本地IP在允许列表,但GitHub Actions的服务器IP为动态分配,大概率不在远程主机的放行规则内:
- 登录远程主机,执行
ufw status查看防火墙规则,确认是否仅放行特定IP段; - 若为云服务器,检查云服务商的安全组入站规则,临时将SSH端口的源IP设为
0.0.0.0/0测试,验证是否是IP限制导致。
2. 核对SSH私钥配置
确保GitHub Secrets中的私钥配置无误:
- 检查
SSH_PRIVATE_KEY内容完整,包含开头-----BEGIN RSA PRIVATE KEY-----和结尾-----END RSA PRIVATE KEY-----,无多余换行或空格; - 远程主机
~/.ssh/authorized_keys需添加对应公钥,同时设置文件权限为600,.ssh目录权限为700。
3. 确认端口配置准确性
- 检查GitHub Secrets里的
SSH_PORT为纯数字格式,无引号或其他冗余字符; - 远程主机
sshd_config中的Port配置与Secrets一致,且已重启sshd服务:sudo systemctl restart sshd。
4. 验证网络连通性
在工作流中添加测试步骤,确认网络可达性:
- name: Test network access run: | ping -c 3 ${{ secrets.HOST }} nc -zv ${{ secrets.HOST }} ${{ secrets.SSH_PORT }}
通过nc命令直接测试端口是否开放,快速定位是网络还是SSH配置问题。
5. 升级SSH Action版本
当前使用的appleboy/ssh-action@v0.1.3版本较旧,可能存在兼容性问题,建议升级到最新稳定版:
uses: appleboy/ssh-action@v1.0.3
内容的提问来源于stack exchange,提问作者hanul
相关产品推荐
相关产品推荐

