Skip to content

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

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.gz

2. 校验文件完整性(推荐)

下载校验和文件并比对:

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: OK

3. 移除旧版本 Go

如果存在旧版本,请先移除:

bash
sudo rm -rf /usr/local/go

4. 解压到 /usr/local

bash
sudo tar -C /usr/local -xzf go1.18.linux-amd64.tar.gz

5. 配置环境变量

将 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 ~/.bashrc

6. 验证安装

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)
  • 多个私有域名用逗号分隔,支持通配符 *
  • 配置后 GONOPROXYGONOSUMDB 会自动同步,跳过校验和数据库检查

验证:

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 getgo 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:

  1. 登录 GitHub → Settings → SSH and GPG keys → New SSH Key
  2. 粘贴公钥内容,保存

验证 SSH 连接:

bash
ssh -T [email protected]
# 预期输出:Hi username! You've successfully authenticated...

5. 添加 GitHub 到 known_hosts(必须)

配置完 SSH Key 后,GitHub 的主机密钥尚未被本地系统信任,执行 go mod tidygit 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:$PATH

Q2:下载速度慢或失败

可使用 golang.google.cn 国内镜像替代:

bash
wget https://golang.google.cn/dl/go1.18.linux-amd64.tar.gz

Q3:权限不足

解压到 /usr/local 需要 sudo 权限,若无权可解压到用户目录:

bash
tar -C ~/ -xzf go1.18.linux-amd64.tar.gz
export PATH=$PATH:~/go/bin

Q4:go mod download 拉取私有仓库报错

报错示例:

go: git.mycompany.com/backend/[email protected]: unrecognized import path

解决方案:

  1. 确认 GOPRIVATE 已正确配置
  2. 确认 Git SSH 认证正常(ssh -T [email protected]
  3. 如果仓库使用 HTTP,配置 GOINSECURE
  4. 检查 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

参考资料

最后更新2026/08/20 14:53
如果你觉得这篇文章有帮助,或者想聊聊技术、工作,欢迎通过下面方式联系我:
contact fishfinal