直接编辑 /etc/hosts 需要 root 权限,普通用户无法写入,必须用 sudo 提权;不加 sudo 会报错“Permission denied”或保存失败(如 vim 显示 “E212”);正确命令为 sudo nano /etc/hosts 或 sudo vim /etc/hosts;Ubuntu 22.04+ 上 sudo gedit 可能闪退,推荐 nano/vim;nano 保存固定为 Ctrl+O→回车→Ctrl+X;修改后需手动刷新 DNS 缓存,如 sudo systemd-resolve --flush-caches,并验证解析结果。

直接编辑 /etc/hosts 需要 root 权限
普通用户无法写入 /etc/hosts,必须用 sudo 提权。不加 sudo 直接打开会报错“Permission denied”,或者编辑后保存失败(nano/vim 显示 “E212: Can’t open file for writing”)。
正确做法是:用带 sudo 的编辑器命令打开,例如:
sudo nano /etc/hosts
或
sudo vim /etc/hosts
注意:sudo gedit /etc/hosts 在较新 Ubuntu(22.04+)可能因 dbus 权限问题闪退,优先选 nano 或 vim。
nano 编辑时保存退出的快捷键容易按错
nano 不是 vi,没有插入/命令模式切换,但新手常误按 Ctrl+S(系统级冻结终端)或 Ctrl+Q(乱码),导致以为“卡死”。实际保存退出固定为三步:
-
Ctrl+O→ 回车确认写入(不是Ctrl+S) -
Ctrl+X→ 退出编辑器 - 如果提示 “Save modified buffer?”,按
Y确认,再回车
改完别急着关终端,先验证格式:每行只能有一个 IP + 一个或多个域名,用空格或 tab 分隔,不能有中文、特殊符号或末尾空格;注释行以 # 开头,且 # 前不能有内容。
Ubuntu 26.04 LTS(代号“Resolute Raccoon”)是Canonical于2026年4月23日发布的下一代长期支持版操作系统,提供长达10年的技术支持。它搭载Linux 7.0内核与GNOME 50桌面环境,全面转向Wayland协议,并引入Rust重写的核心工具以增强安全性。官方提供适用于AMD64和ARM64架构的桌面及服务器ISO镜像,是追求前沿技术与极致稳定的开发者
改完 hosts 后 DNS 不立即生效
Linux 不像 Windows 那样自动刷新 hosts 缓存,修改后需手动触发解析更新。不同 Ubuntu 版本机制不同:
- Ubuntu 20.04+(使用 systemd-resolved):
sudo systemd-resolve --flush-caches - Ubuntu 18.04 及更早(使用 dnsmasq 或无缓存):
sudo systemctl restart networking或sudo resolvectl flush-caches - 最通用保险的做法:
sudo systemctl restart systemd-resolved
验证是否生效:运行 ping -c 1 github.com,看返回的 IP 是否是你在 /etc/hosts 里写的;也可以用 getent hosts github.com 直接查 hosts 解析结果,绕过 DNS。
GitHub 域名映射容易过期或失效
GitHub 使用 CDN 和负载均衡,IP 经常变动。你今天填的 140.82.121.4 明天可能就不可达,甚至被拦截。常见表现是:ping 通但 curl https://github.com 报 SSL 错误或超时。
原因不止是 IP 失效,还有:
- 只写了
github.com,漏掉api.github.com、objects.githubusercontent.com等子域,导致 git clone 失败 - 填了 IPv6 地址但本地未启用 IPv6,反而拖慢解析
- 某些 ISP 或路由器会劫持 hosts 解析,强制走自己 DNS
临时方案可用,但长期依赖 hosts 绕过网络限制,不如配合 git config --global http.sslVerify false(仅调试)或换源(如镜像站)、用代理更稳定。

















