Appearance
Linux 安装 Go 1.18(amd64)| 完整步骤与环境配置(2026 最新)

前言
Go 1.18 是一个重要的里程碑版本,正式引入了 泛型 支持,同时性能与工具链也有显著提升。本文记录在 Linux(amd64)环境下的安装过程,方便日后快速复现。
版本提醒
Go 1.18 已于 2022年3月发布,官方维护已于 2023年3月结束。生产环境建议使用更新的稳定版本(如 Go 1.21+)。本文仅适用于特定场景(如兼容旧项目)的安装参考。
下载地址
官方下载链接(Linux amd64):
bash
https://go.dev/dl/go1.18.linux-amd64.tar.gz安装步骤
1. 下载安装包
bash
wget https://go.dev/dl/go1.18.linux-amd64.tar.gz如果网络较慢,可使用国内代理加速:
bash
wget https://golang.google.cn/dl/go1.18.linux-amd64.tar.gz2. 校验文件完整性(推荐)
下载校验和文件并比对:
bash
wget https://go.dev/dl/go1.18.linux-amd64.tar.gz.sha256
sha256sum -c go1.18.linux-amd64.tar.gz.sha256预期输出:
bash
go1.18.linux-amd64.tar.gz: OK3. 移除旧版本 Go
如果存在旧版本,请先移除:
bash
sudo rm -rf /usr/local/go4. 解压到 /usr/local
bash
sudo tar -C /usr/local -xzf go1.18.linux-amd64.tar.gz5. 配置环境变量
将 Go 的二进制目录加入 PATH,编辑 ~/.bashrc 或 ~/.zshrc:
bash
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc可选:配置 GOPATH(默认在 ~/go):
bash
echo 'export GOPATH=$HOME/go' >> ~/.bashrc
echo 'export PATH=$PATH:$GOPATH/bin' >> ~/.bashrc
source ~/.bashrc6. 验证安装
bash
go version预期输出:
bash
go version go1.18 linux/amd64后续配置(新系统必须)
安装完成后,建议进行以下配置,特别是针对私有仓库和 Git 认证场景。
1. 配置私有仓库代理(GOPRIVATE)
如果你的项目依赖公司内部的私有 Go 模块(如 git.mycompany.com/backend/pkg),需要设置 GOPRIVATE,避免 Go 工具链尝试通过公共代理(如 proxy.golang.org)拉取:
bash
go env -w GOPRIVATE="git.mycompany.com,github.com/your-org/*"原因:
- 防止 Go 通过公共代理请求私有仓库(会返回 404 或 410)
- 多个私有域名用逗号分隔,支持通配符
* - 配置后
GONOPROXY和GONOSUMDB会自动同步,跳过校验和数据库检查
验证:
bash
go env GOPRIVATE
# 预期输出:git.mycompany.com,github.com/your-org/*2. 配置非安全仓库(GOINSECURE,可选)
如果私有仓库使用自签名证书或 HTTP 协议(非标准 HTTPS),需要设置 GOINSECURE 跳过 TLS 验证:
bash
go env -w GOINSECURE="git.mycompany.com,internal.repo.local"原因:
- 默认 Go 要求所有 HTTPS 连接必须有效证书
- 自建 GitLab/Gitea 常使用自签名证书,Go 会报
x509: certificate signed by unknown authority - 仅对指定的域名跳过 TLS 校验,不影响其他安全连接
安全提示
GOINSECURE 会降低安全性,仅在内网开发环境使用,生产环境应优先使用正规证书。
3. Git 全局配置:HTTPS → SSH 协议转换
将 GitHub 的 HTTPS 克隆请求自动转换为 SSH 协议:
bash
git config --global url."[email protected]:".insteadOf "https://github.com/"原因:
- Go 默认使用 HTTPS 拉取
github.com依赖 - HTTPS 方式需要输入账号密码或 Personal Access Token
- SSH 方式使用密钥认证,无需交互,更适合 CI/CD 和自动化脚本
- 配置后
go get和go mod download均生效
验证:
bash
git config --global --get-regexp url
# 预期输出:[email protected]:.insteadof https://github.com/4. 生成 SSH 密钥并添加至 GitHub
为了让 SSH 方式正常工作,需要生成并配置 SSH Key:
bash
# 生成 ED25519 密钥(推荐,比 RSA 更快更安全)
ssh-keygen -t ed25519 -C "[email protected]"
# 或使用 RSA 4096(兼容更老的系统)
ssh-keygen -t rsa -b 4096 -C "[email protected]"配置步骤:
bash
# 1. 启动 ssh-agent 并添加密钥
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
# 2. 查看公钥
cat ~/.ssh/id_ed25519.pub将公钥添加到 GitHub:
- 登录 GitHub → Settings → SSH and GPG keys → New SSH Key
- 粘贴公钥内容,保存
验证 SSH 连接:
bash
ssh -T [email protected]
# 预期输出:Hi username! You've successfully authenticated...5. 添加 GitHub 到 known_hosts(必须)
配置完 SSH Key 后,GitHub 的主机密钥尚未被本地系统信任,执行 go mod tidy 或 git clone 时会报错:
bash
Host key verification failed.
fatal: Could not read from remote repository.解决方案: 手动将 GitHub 的主机密钥添加到 ~/.ssh/known_hosts:
bash
# 方式一:通过 ssh-keyscan 自动添加(推荐)
ssh-keyscan github.com >> ~/.ssh/known_hosts 2>/dev/null
# 方式二:手动确认(交互式)
ssh -T [email protected]
# 提示 "Are you sure you want to continue connecting (yes/no)?" 输入 yes验证 known_hosts 是否添加成功:
bash
ssh-keygen -H -F github.com
# 预期输出:# Host github.com found: line X ...原因:
- SSH 连接首次访问未知主机时会要求交互确认(yes/no)
go mod tidy/go mod download是非交互式命令,无法响应确认提示,直接失败- 提前将主机密钥加入
known_hosts,可避免此问题
安全提示
ssh-keyscan 会跳过主机密钥验证,存在中间人攻击风险。生产环境建议手动确认密钥指纹,GitHub 的 ED25519 指纹为:
SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU可访问 GitHub 官方文档 核对。
完整脚本(一键安装)
基础版:仅安装 Go
将以下内容保存为 install_go1.18.sh:
bash
#!/bin/bash
set -e
GO_VERSION="1.18"
GO_OS="linux"
GO_ARCH="amd64"
GO_PACKAGE="go${GO_VERSION}.${GO_OS}-${GO_ARCH}.tar.gz"
GO_URL="https://go.dev/dl/${GO_PACKAGE}"
wget "${GO_URL}"
wget "${GO_URL}.sha256"
sha256sum -c "${GO_PACKAGE}.sha256"
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf "${GO_PACKAGE}"
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc
go version执行:
bash
chmod +x install_go1.18.sh
./install_go1.18.sh增强版:安装 Go + 完整环境配置
bash
#!/bin/bash
# 一键配置 Go 开发环境(在安装 Go 后执行)
set -e
# ==================== 配置私有仓库代理 ====================
echo "配置 GOPRIVATE..."
# 请根据实际域名修改
go env -w GOPRIVATE="git.mycompany.com,github.com/your-org/*"
# ==================== 配置非安全仓库(如需要) ====================
# echo "配置 GOINSECURE..."
# go env -w GOINSECURE="git.mycompany.com"
# ==================== Git HTTPS → SSH 转换 ====================
echo "配置 Git 协议转换..."
git config --global url."[email protected]:".insteadOf "https://github.com/"
# ==================== 生成 SSH Key ====================
if [ ! -f ~/.ssh/id_ed25519 ]; then
echo "生成 SSH Key..."
ssh-keygen -t ed25519 -C "[email protected]" -f ~/.ssh/id_ed25519 -N ""
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
echo "=========================================="
echo "请将以下公钥添加到 GitHub:"
echo "=========================================="
cat ~/.ssh/id_ed25519.pub
echo "=========================================="
else
echo "SSH Key 已存在,跳过生成"
fi
# ==================== 添加 GitHub 到 known_hosts ====================
if ! ssh-keygen -H -F github.com &>/dev/null; then
echo "添加 GitHub 到 known_hosts..."
ssh-keyscan github.com >> ~/.ssh/known_hosts 2>/dev/null
echo "GitHub 已添加到 known_hosts"
else
echo "GitHub 已在 known_hosts 中"
fi
echo "=========================================="
echo "配置完成!"
echo "=========================================="
go env GOPRIVATE
git config --global --get-regexp url
ssh-keygen -H -F github.com执行:
bash
chmod +x setup_go_env.sh
./setup_go_env.sh常见问题
Q1:go version 仍显示旧版本
检查 PATH 优先级,确认 /usr/local/go/bin 在其他 Go 路径之前:
bash
which go
echo $PATH可通过以下命令临时覆盖:
bash
export PATH=/usr/local/go/bin:$PATHQ2:下载速度慢或失败
可使用 golang.google.cn 国内镜像替代:
bash
wget https://golang.google.cn/dl/go1.18.linux-amd64.tar.gzQ3:权限不足
解压到 /usr/local 需要 sudo 权限,若无权可解压到用户目录:
bash
tar -C ~/ -xzf go1.18.linux-amd64.tar.gz
export PATH=$PATH:~/go/binQ4:go mod download 拉取私有仓库报错
报错示例:
go: git.mycompany.com/backend/[email protected]: unrecognized import path解决方案:
- 确认
GOPRIVATE已正确配置 - 确认 Git SSH 认证正常(
ssh -T [email protected]) - 如果仓库使用 HTTP,配置
GOINSECURE - 检查 Git 全局配置是否覆盖了私有域名的 HTTPS 转换
Q5:Git HTTPS → SSH 转换后,私有仓库仍报错
检查 Git 配置是否包含私有仓库域名:
bash
git config --global --get-regexp url如有冲突,可单独为私有仓库添加转换规则:
bash
git config --global url."[email protected]:".insteadOf "https://git.mycompany.com/"Q6:go mod tidy 报错 Host key verification failed
报错示例:
Host key verification failed.
fatal: Could not read from remote repository.解决方案:
bash
# 方式一:自动添加
ssh-keyscan github.com >> ~/.ssh/known_hosts 2>/dev/null
# 方式二:手动确认
ssh -T [email protected]
# 输入 yes 确认如果是私有 Git 仓库(如 git.mycompany.com),替换域名:
bash
ssh-keyscan git.mycompany.com >> ~/.ssh/known_hosts 2>/dev/null配置清单(快速检查)
完成所有配置后,执行以下命令检查环境:
bash
# 1. 检查 Go 版本
go version
# 2. 检查环境变量
go env | grep -E "GOPRIVATE|GOINSECURE|GOPROXY"
# 3. 检查 Git 配置
git config --global --get-regexp url
# 4. 检查 SSH 认证
ssh -T [email protected]
ssh -T [email protected] # 如有私有 Git 仓库
# 5. 检查 PATH
echo $PATH | grep go
# 6. 检查 known_hosts
ssh-keygen -H -F github.com