极简教程: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,告别重复输入密码的烦恼。

📌 拓展阅读:


相关推荐
大树882 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质2 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
开发者联盟league2 天前
安装pnpm
ssh
Inhand陈工2 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智2 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_2 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉2 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
AC赳赳老秦2 天前
用 OpenClaw 搭建服务器故障应急响应系统,自动处理 80% 常见运维故障
android·运维·服务器·python·rxjava·deepseek·openclaw
2601_961875242 天前
决战申论100题2026|最新|范文
linux·容器·centos·debian·ssh·fabric·vagrant