服务器访问github受限的解决办法

一、平台说明

为了防止网络抽风连不上github,可以设置代理,

  • Windows/Mac :Winodws和Mac上可以使用'switchhosts'。它自带有图形化界面(所以没有图像化界面的机器用不了),使用方法可以参考switchHost使用指南
  • Linux : 对于没有图形化界面的linux服务器可以使用fastgithub,参考下面这里fastgisthub使用指南
    为防止链接失效,这里再给一个备份的使用sh脚本,直接运行就可以(保存为.sh然后chmod u+x赋予权限之后,用sudo指令执行,还不会建议问大D老师)。
二、fastgithub脚本封装

另外注意下,这个是从国内gitee的一个仓库上找的fastgithub的安装包,仓库没了的话需要自己修改脚本中的URL,替换为别的包的下载地址。

bash 复制代码
#!/usr/bin/env bash
set -euo pipefail

VERSION="2.1.4"
INSTALL_DIR="/opt"

HTTP_PROXY_VALUE="http://127.0.0.1:38457"
HTTPS_PROXY_VALUE="http://127.0.0.1:38457"
NO_PROXY_VALUE="localhost,127.0.0.1,::1"

ARCH="$(uname -m)"
if [[ "$ARCH" == "aarch64" || "$ARCH" == "arm64" ]]; then
  ZIP_NAME="fastgithub_linux-arm64.zip"
  APP_DIR="${INSTALL_DIR}/fastgithub_linux-arm64"
else
  ZIP_NAME="fastgithub_linux-x64.zip"
  APP_DIR="${INSTALL_DIR}/fastgithub_linux-x64"
fi

URL="https://gitee.com/chcrazy/FastGithub/releases/download/${VERSION}/${ZIP_NAME}"
ZIP_PATH="${INSTALL_DIR}/${ZIP_NAME}"

SERVICE_NAME="fastgithub.service"
SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}"

if [[ "${EUID}" -ne 0 ]]; then
  echo "请用 root 执行:sudo $0"
  exit 1
fi

echo "[1/8] 安装依赖(unzip/wget/systemd)"
if command -v apt-get >/dev/null 2>&1; then
  apt-get update -y
  apt-get install -y unzip wget ca-certificates
elif command -v dnf >/dev/null 2>&1; then
  dnf install -y unzip wget ca-certificates
elif command -v yum >/dev/null 2>&1; then
  yum install -y unzip wget ca-certificates
else
  echo "未识别的包管理器,请手动安装 unzip 和 wget"
fi

echo "[2/8] 写入全局代理环境变量:/etc/environment(新登录会话生效)"
cp -a /etc/environment "/etc/environment.bak.$(date +%F_%H%M%S)" 2>/dev/null || true
cat > /etc/environment <<EOF
http_proxy=${HTTP_PROXY_VALUE}
https_proxy=${HTTPS_PROXY_VALUE}
HTTP_PROXY=${HTTP_PROXY_VALUE}
HTTPS_PROXY=${HTTPS_PROXY_VALUE}
no_proxy=${NO_PROXY_VALUE}
NO_PROXY=${NO_PROXY_VALUE}
EOF

# 让"当前脚本进程"也立即使用这些变量(不等重新登录)
set -a
# shellcheck disable=SC1091
source /etc/environment
set +a

echo "[3/8] 下载:${URL}"
mkdir -p "${INSTALL_DIR}"
wget -c -O "${ZIP_PATH}" "${URL}"

echo "[4/8] 解压到:${INSTALL_DIR}"
unzip -o -d "${INSTALL_DIR}" "${ZIP_PATH}"

echo "[5/8] 删除压缩包:${ZIP_PATH}"
rm -f "${ZIP_PATH}"

BIN="${APP_DIR}/fastgithub"
if [[ ! -x "${BIN}" ]]; then
  echo "ERROR: 找不到可执行文件:${BIN}"
  echo "请检查解压后的目录结构:ls -lah ${INSTALL_DIR}"
  exit 1
fi

echo "[6/8] 写入 systemd 服务文件(开机自启)"
cat > "${SERVICE_FILE}" <<EOF
[Unit]
Description=FastGithub
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=root
Group=root

Environment="http_proxy=${HTTP_PROXY_VALUE}"
Environment="https_proxy=${HTTPS_PROXY_VALUE}"
Environment="HTTP_PROXY=${HTTP_PROXY_VALUE}"
Environment="HTTPS_PROXY=${HTTPS_PROXY_VALUE}"
Environment="no_proxy=${NO_PROXY_VALUE}"
Environment="NO_PROXY=${NO_PROXY_VALUE}"

WorkingDirectory=${APP_DIR}
ExecStart=${BIN}

Restart=on-failure
RestartSec=2

[Install]
WantedBy=multi-user.target
EOF

echo "[7/8] 重新加载 systemd 并启动服务"
systemctl daemon-reload
systemctl enable --now "${SERVICE_NAME}"

echo "[8/8] 输出服务状态与环境变量"
systemctl status "${SERVICE_NAME}" --no-pager -l || true
echo
echo "service env:"
systemctl show "${SERVICE_NAME}" -p Environment --no-pager
echo
echo "global env (/etc/environment):"
grep -E '^(http_proxy|https_proxy|HTTP_PROXY|HTTPS_PROXY|no_proxy|NO_PROXY)=' /etc/environment || true
三、注意事项

本质是是走代理,不要指望速度多快,有个几百k的速度算比较不错了,看代码足够了。

另外如果pip设置了代理,上面的操作可能导致代理失效,这个时候可以修改服务器的~/.bashrc,加入下面的一段

bash 复制代码
proxy_on() {
  export http_proxy="http://127.0.0.1:7890"
  export https_proxy="http://127.0.0.1:7890"
  export all_proxy="socks5://127.0.0.1:7890"
  export no_proxy="localhost,127.0.0.1,::1,*.tuna.tsinghua.edu.cn"
  echo "proxy on, can connect to github but may cause pip install failure"
}

proxy_off() {
  unset http_proxy https_proxy all_proxy HTTP_PROXY HTTPS_PROXY ALL_PROXY
  echo "proxy off, can not connec to github"
}

然后source ~/.bashrc,这样以后要上github就proxy_on,要pip下东西就是proxy_off,其他的设置代理也是同理。

相关推荐
sdm07042713 分钟前
linux权限
linux·运维·服务器
yuezhilangniao14 分钟前
大白话AI运维K8S整体思路和相关名词-结合腾讯云
运维·人工智能·kubernetes
piepis22 分钟前
Linux 下升级 Python 3.7 → 3.9(离线)并内网安装本地python-packages
linux·运维·python
SP八岐大兔24 分钟前
Ollama安装及运行模型
linux·服务器·ollama
深念Y25 分钟前
Nginx和Spring Cloud Gateway
运维·服务器·网络·网关·nginx·spring cloud·微服务
困惑阿三26 分钟前
全栈部署排雷手册:从 405 报错到飞书推送成功
服务器·前端·后端·nginx·阿里云·node.js·飞书
wuyaolong00731 分钟前
Git误操作急救手册大纲
ui·github
Elastic 中国社区官方博客31 分钟前
测试 Elasticsearch,现在变得更简单了
大数据·运维·elasticsearch·搜索引擎·全文检索
野犬寒鸦32 分钟前
从零起步学习JVM|| 第二章:JVM基本组成及JVM内存区域详解
服务器·开发语言·后端·学习·面试·职场和发展
vx-bot55566636 分钟前
企业微信ipad协议的防封号技术体系与策略实践
服务器·企业微信·ipad