使用Github Actions ssh-action连接Digital Ocean VPS超时问题求助
Github Actions SSH连接DigitalOcean VPS超时排查方案
以下是几种常见原因及对应的排查方法:
VPS防火墙/安全组IP限制
本地能连接不代表Github Actions的IP能访问。目标VPS的防火墙(如ufw、iptables)或DigitalOcean安全组可能仅放行你的本地IP,而Github Actions运行节点的IP是动态的,不在允许列表内。临时实例通常默认开放所有IP的SSH权限,因此能正常连接。
排查操作:- 登录目标VPS,执行
sudo ufw status或sudo iptables -L查看防火墙规则,确认22端口是否允许所有IP访问; - 登录DigitalOcean控制台,检查目标VPS的安全组配置,临时将SSH端口的来源设置为
0.0.0.0/0测试(后续可根据Github官方IP范围缩小权限)。
- 登录目标VPS,执行
SSH服务端配置限制
目标VPS的sshd_config可能存在登录限制,比如通过AllowUsers指定仅允许特定IP的用户登录,或者开启UseDNS导致反向解析超时,这些限制在临时实例的默认配置中不存在。
排查操作:- 查看SSH配置:
cat /etc/ssh/sshd_config | grep -E "AllowUsers|DenyUsers|UseDNS|MaxStartups"; - 若存在
AllowUsers配置,确认是否包含你在Actions中使用的登录用户; - 若
UseDNS为yes,修改为UseDNS no后重启SSH服务:sudo systemctl restart sshd。
- 查看SSH配置:
网络路由或监听范围问题
目标VPS的22端口可能仅监听本地回环地址(127.0.0.1),而非所有网卡(0.0.0.0),或者机房网络存在路由故障,导致外部请求无法到达。
排查操作:
执行netstat -anp | grep sshd,确认输出中包含0.0.0.0:22或:::22,说明端口在全局监听;若仅显示127.0.0.1:22,需修改sshd_config中的ListenAddress配置。ssh-action参数或密钥问题
本地可用的密钥在Actions中可能存在格式问题,比如粘贴时丢失换行、存在多余空格,或者host参数填写错误(如带了多余的端口后缀)。
排查操作:- 核对Actions workflow中ssh-action的
host、username、key参数是否与本地一致; - 在ssh-action配置中添加
debug: true,查看Actions运行日志中的详细连接过程,定位超时的具体环节。
- 核对Actions workflow中ssh-action的
内容的提问来源于stack exchange,提问作者yoyoyoyo123
相关产品推荐
相关产品推荐

