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

📌 拓展阅读:


相关推荐
德迅云安全-小潘6 小时前
APP运营服务器配置全攻略:从选型到网络安全,你需要知道的一切
运维·服务器·web安全
Yupureki6 小时前
《Linux网络编程》9.数据链路层原理
linux·运维·服务器·网络
切糕师学AI6 小时前
Remmina:Linux 平台的全能远程桌面客户端详解
linux·运维·远程控制·远程桌面·remmina
dualven_in_csdn6 小时前
【assist】 需要用到的方法
linux·运维·服务器
diangedan7 小时前
focuswindow
linux·运维·服务器
私人珍藏库7 小时前
[吾爱大神原创工具] 网卡切换小工具
运维·服务器
bitbrowser7 小时前
Gemini Advanced 订阅共享排坑方案,车队共享稳定策略
运维·服务器·网络·ai
~黄夫人~7 小时前
Kubernetes 入门到实战:概念详解 + kubeadm 安装 + 节点克隆全流程
linux·运维·学习·k8s·集群
悠悠121387 小时前
生产环境救急指南:Linux服务器忘记密码的N种解法,覆盖主流系统和云厂商
linux·运维·服务器
倔强的石头1067 小时前
kingbase备份与恢复实战(六)—— 备份自动化与保留策略:Windows任务计划+日志追溯
运维·windows·自动化