极简教程:GitLab 上配置 SSH Key(附常见问题解决)

极简教程:GitLab 上配置 SSH Key(附常见问题解决)

每次 git clone 都提示 Permission denied或者 Your SSH key has expired,

?密钥过期不知如何更新?本文将手把手教你生成 SSH 密钥、添加到 GitLab、并验证连接,彻底告别密码输入和权限错误。

字节出品,必属精品。免费注册Coze,解锁下一代生产力工具。

为什么需要 SSH Key?

GitLab 支持 HTTPS 和 SSH 两种协议拉取/推送代码:

  • HTTPS:每次操作都要输入用户名和密码(或 Personal Access Token),且容易暴露凭证。
  • SSH:使用公钥加密认证,配置一次即可免密操作,更安全、更便捷。

SSH Key 由一对密钥组成:私钥 (留在本地,绝不能泄露)和公钥(上传到 GitLab 服务器)。当你连接 GitLab 时,服务器会用公钥加密一个随机字符串,只有你的私钥能解开,从而证明你的身份。

准备工作

  • 一台安装了 Git 和 OpenSSH 的电脑(Windows、macOS、Linux 均可)
  • 一个能登录的 GitLab 账号(自托管版或 gitlab.com 均可)

第一步:生成 SSH 密钥对

打开终端(Windows 推荐使用 Git Bash 或 PowerShell)。

1.1 检查是否已有密钥

bash 复制代码
ls ~/.ssh/id_rsa.pub

如果文件存在,可以跳过生成步骤,直接使用现有密钥(建议还是重新生成,确保安全强度)。

1.2 生成新密钥

bash 复制代码
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  • -t rsa:密钥类型为 RSA
  • -b 4096:4096 位长度(比默认 2048 更安全)
  • -C:添加注释,通常用你的邮箱,便于识别

按提示操作:

  1. 保存路径 :直接按回车,使用默认路径 ~/.ssh/id_rsa
  2. 密码短语(passphrase):可以留空(直接回车),也可以设置一个密码(每次使用密钥需输入)。对于个人开发机,留空更方便。

输出示例:

复制代码
Your identification has been saved in /home/user/.ssh/id_rsa
Your public key has been saved in /home/user/.ssh/id_rsa.pub

第二步:复制公钥内容

执行以下命令查看公钥并复制:

bash 复制代码
cat ~/.ssh/id_rsa.pub

你会看到类似这样的一长串字符:

复制代码
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC... your_email@example.com

全选并复制 (从 ssh-rsa 到最后的邮箱)。

💡 小技巧:Linux/macOS 可用 pbcopyxclip 直接复制到剪贴板。

bash 复制代码
# macOS
pbcopy < ~/.ssh/id_rsa.pub
# Linux (需安装 xclip)
xclip -sel clip < ~/.ssh/id_rsa.pub

第三步:在 GitLab 上添加公钥

  1. 登录 GitLab ,点击右上角你的 头像Preferences(偏好设置)。
  2. 左侧菜单栏找到 SSH Keys(位于 "User Settings" 分组下)。
  3. Key 文本框中粘贴刚才复制的公钥内容。
  4. 填写 Title :一个便于识别的名称,例如 我的笔记本公司台式机
  5. Expiration date (过期日期):
    • 如果公司安全策略要求定期更换,请选择一个未来的日期(例如 1 年后)。
    • 如果不希望过期,可以留空(部分 GitLab 版本默认永不过期,管理员可覆盖)。
  6. 点击 Add key 按钮。

添加成功后,该公钥会出现在列表中。

第四步:测试 SSH 连接

在终端执行:

bash 复制代码
ssh -T git@gitlab.com

如果你使用的是自托管 GitLab ,将 gitlab.com 替换为你的 GitLab 域名或 IP,例如:

bash 复制代码
ssh -T git@66.6.91.73
  • 第一次连接时,会提示验证主机指纹,输入 yes 并回车。

  • 成功时,你会看到类似以下输出:

    Welcome to GitLab, @your_username!

如果看到 Permission denied (publickey)key has expired,请检查:

  • 公钥是否完整复制(不要有空格或换行)
  • 密钥是否已添加到正确的 GitLab 账号下
  • 私钥权限是否正确:chmod 600 ~/.ssh/id_rsa

第五步:使用 SSH 克隆仓库

现在你可以用 SSH 地址克隆项目了:

bash 复制代码
git clone git@gitlab.com:your-group/your-project.git

之后所有 git pushgit pull 都不再需要密码。

常见问题排查

Q1:添加密钥后仍然提示 Permission denied

可能原因

  • 你用的 SSH 私钥不是默认的 id_rsa,需要显式告诉 SSH 使用哪个密钥。
    解决方法:ssh-add ~/.ssh/your_private_key
  • GitLab 账号没有该仓库的访问权限(检查项目成员权限)。
  • 服务器地址写错了(例如 git@gitlab.com:group/project 中的冒号被写成了斜杠)。

Q2:提示 Your SSH key has expired

  • 登录 GitLab → SSH Keys 页面,找到过期的那条记录,删除后重新添加一个新公钥(或延长有效期)。
  • 如果不想频繁过期,生成新密钥时不设置有效期(需管理员允许)。

Q3:多个密钥如何管理?

编辑 ~/.ssh/config 文件,为不同主机指定不同密钥:

复制代码
Host gitlab.com
    HostName gitlab.com
    User git
    IdentityFile ~/.ssh/id_rsa_gitlab

Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_github

Q4:如何删除旧密钥?

在 GitLab 的 SSH Keys 页面,点击密钥旁边的 Remove 按钮即可。

总结

配置 SSH Key 是提升 Git 使用体验的基本功,仅需四步:

  1. 生成密钥对:ssh-keygen
  2. 复制公钥:cat ~/.ssh/id_rsa.pub
  3. 添加到 GitLab:Settings → SSH Keys
  4. 测试连接:ssh -T git@gitlab.com

一次配置,长期受益。花 5 分钟切换到 SSH,告别重复输入密码的烦恼。

📌 拓展阅读:


相关推荐
console.log('npc')2 分钟前
Windows试用期重置工具,纯官方 / 安全教程
运维·自动化·typora·脚本
Shingmc36 分钟前
【Linux】多路转接之epoll
linux·运维·服务器·开发语言·网络
心满意足的大脸猫15 分钟前
Win11 开启 SSH 服务器与密钥登录配置记录
服务器·microsoft·ssh
Cat_Rocky17 分钟前
Jenkins通过kubernetes连接K8s集群
运维·kubernetes·jenkins
Plastic garden17 分钟前
Docker(2)数据挂载
运维·docker·容器
Plastic garden18 分钟前
Docker(4) Compose
运维·docker·容器
utf8mb4安全女神25 分钟前
磁盘管理(交换分区)(MGR分区)(GPT分区)
linux·运维·服务器
不会就选b26 分钟前
linux之vim
linux·运维·vim
humors22132 分钟前
聊聊密码为啥会“白设”
大数据·运维·服务器·网络·网络安全
xiaobobo33301 小时前
Ubuntu 26.04下编译s5pv210芯片的linux内核源码,无法进入menuconfig界面
linux·运维·ubuntu