服务器访问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,其他的设置代理也是同理。

相关推荐
kaoa0006 小时前
Linux入门攻坚——57、HAProxy
linux·运维·服务器
欢喜躲在眉梢里6 小时前
基于 openFuyao 社区的无硬件 UB 开发实战指南
运维·数据库·人工智能·vscode·ai·开发工具·go开发
何妨呀~6 小时前
Linux在VMware上添加磁盘与扩展分区
linux·运维·服务器
Wang's Blog6 小时前
RabbitMQ: 全面安装与运维指南之从基础部署到高级配置
运维·分布式·rabbitmq
CIb0la6 小时前
Linux 6.19-rc1 释出,龙芯为内核加入 32 位架构支持
linux·运维
model20056 小时前
Web 服务和 SFTP 用户 操作目录
linux·运维·服务器
刃神太酷啦6 小时前
Linux 进程核心原理精讲:从体系结构到实战操作(含 fork / 状态 / 优先级)----《Hello Linux!》(6)
java·linux·运维·c语言·c++·算法·leetcode
Lethehong6 小时前
从零到精通:Docker容器化完整指南与实战练习
运维·docker·容器
永恒-龙啸6 小时前
spooling假脱机输入输出模拟
c语言·开源·github