AWS EC2 Ubuntu实例无法连接bitbucket.org技术求助
我之前碰到过一模一样的场景,结合你的EC2环境(Ubuntu 16.04、Git 2.7.4)和描述的问题,咱们一步步来排查解决:
1. 先排查DNS解析问题(ping不通大概率是这个原因)
很多时候EC2默认的VPC DNS会抽风,导致无法解析bitbucket.org的域名。咱们先验证解析是否正常:
# 用nslookup检查域名解析 nslookup bitbucket.org # 或者用dig查看更详细的解析信息 dig bitbucket.org
如果返回的IP是空的、报错,或者和Bitbucket实际IP不符,那就是DNS的问题。可以手动配置公共DNS来修复:
编辑/etc/resolv.conf文件,添加以下内容:
nameserver 8.8.8.8 nameserver 8.8.4.4
注意Ubuntu 16.04如果用了systemd-resolved,直接改这个文件重启后会失效,建议用resolvconf工具持久化配置:
sudo apt-get install resolvconf echo "nameserver 8.8.8.8" | sudo tee /etc/resolvconf/resolv.conf.d/head echo "nameserver 8.8.4.4" | sudo tee -a /etc/resolvconf/resolv.conf.d/head sudo resolvconf -u
2. 验证SSH端口(22)的连通性(ping不通不代表端口不可达)
很多云服务商默认会禁用ICMP流量(也就是ping),所以ping没响应不代表SSH端口不能用。咱们直接测试Bitbucket的22端口:
# 用telnet测试端口连通性 telnet bitbucket.org 22 # 或者用nc更简洁地测试 nc -zv bitbucket.org 22
如果看到类似Connected to bitbucket.org或者Connection succeeded的提示,说明端口是通的;如果超时,那得再检查网络配置:
- 确认安全组的出站规则确实是“所有流量”(0.0.0.0/0)
- 检查VPC的网络访问控制列表(NACL):NACL是双向的,出站允许所有流量的同时,入站要允许Ephemeral端口范围(通常是1024-65535)的响应流量
- 确认EC2所在的子网有路由指向互联网网关(IGW),如果是私有子网,需要配置NAT网关
3. 检查SSH密钥和Git配置
如果端口是通的,那大概率是SSH密钥的问题:
- 先查看EC2上的SSH公钥:
cat ~/.ssh/id_rsa.pub
- 登录Bitbucket,进入个人设置 → SSH密钥,检查是否已经添加了上面这个公钥。如果没有,生成新的密钥(一路回车默认即可):
ssh-keygen -t rsa -b 4096 -C "your-email@example.com"
然后把生成的~/.ssh/id_rsa.pub内容复制到Bitbucket的SSH密钥列表里。
- 手动测试SSH连接Bitbucket:
ssh -T git@bitbucket.org
如果成功,会返回logged in as <你的Bitbucket用户名>.;如果失败,会给出具体错误(比如Permission denied),根据提示调整即可。
4. 尝试升级Git版本
你的Git版本是2.7.4,虽然Bitbucket官方说支持旧版本,但有些旧版本的Git可能存在SSH兼容性问题。可以升级到较新的版本试试:
sudo add-apt-repository ppa:git-core/ppa sudo apt-get update sudo apt-get install git
升级完成后用git --version确认版本,再尝试克隆仓库。
内容的提问来源于stack exchange,提问作者Dhairya

