CircleCI构建GitHub项目后无法通过SSH/SCP传输jar包到本地Mac如何解决
问题根因排查
最核心的原因是网络连通性问题:你本地Mac如果使用的是家用/办公内网IP(常见为192.168.x.x、10.x.x.x、172.16-31.x.x段),CircleCI的公有执行机运行在公网环境,默认无法直接访问内网私有地址,这是SSH返回超时的最常见原因。
其他存在的配置问题
- 密钥类型不匹配:你本地生成的是ed25519类型的SSH密钥,但CircleCI执行机自动生成的SSH配置指向的是
id_rsa前缀的RSA类型密钥文件,两类密钥路径不匹配,就算网络通也会出现认证失败问题。 - 指纹匹配错误:你配置文件中填写的SSH密钥指纹
a3:72:52:7d:19:e4:41:16:f1:87:ed:84:01:f9:d8:c0,和执行机SSH配置中密钥文件的后缀a373527d19e44616f18fdf4328ed8401f不一致,说明你复制粘贴指纹时出现了错误,也会导致密钥无法正常匹配。 - 公网访问规则缺失:就算你本地使用公网IP,也需要确认三层网络配置正常:
- 本地路由器做好22端口映射,将公网22端口流量转发到你Mac的内网IP
- 本地Mac防火墙、运营商网络没有封禁22端口的公网入方向访问
可行解决方案
- 优先使用内网穿透工具:可以用ngrok、frp等工具将本地Mac的22端口代理到公网,scp时直接连接穿透后的公网地址和分配的端口即可,不需要调整公网路由配置。
- 修正密钥配置:确认CircleCI项目后台上传的是本地生成的ed25519公钥完整内容,也可以在scp命令中添加
-i 私钥路径参数手动指定密钥,绕过SSH配置的自动匹配逻辑。 - 逐层排查网络:先在CircleCI执行机中执行
ping 你本地的IP确认网络可达,再执行telnet 你本地的IP 22确认22端口可访问,先解决网络连通问题再排查密钥认证问题。
内容的提问来源于stack exchange,提问作者D N Vijay Kumar
相关产品推荐
相关产品推荐

