GitLab和SSH密钥
Git是一个分布式版本控制系统,这意味着您可以在本地工作,但您也可以将更改共享或“推送”到其他服务器。在将更改推送到GitLab服务器之前,您需要一个安全的通信通道来共享信息。
SSH协议提供此安全性,允许您在不提供用户名或密码的情况下对GitLab远程服务器进行身份验证。
有关SSH协议如何工作的更详细说明,我们建议您阅读DigitalOcean的这个精彩教程。
找到现有的SSH密钥对
在生成新的SSH密钥对之前,通过打开shell或Windows上的命令提示符并运行以下命令,检查您的系统是否已在默认位置具有一个密钥对:
Windows命令提示符:
type %userprofile%\.ssh\id_rsa.pub
Windows / GNU / Linux / macOS / PowerShell上的Git Bash:
cat ~/.ssh/id_rsa.pub
如果您看到以ssh-rsa您开头的字符串已经有SSH密钥对,您可以跳过下一部分的生成部分并跳到复制到剪贴板步骤
如果您没有看到该字符串或想要生成具有自定义名称的SSH密钥对,请继续执行下一步
请注意,公共SSH密钥也可以如下命名:
- id_dsa.pub
- id_ecdsa.pub
- id_ed25519.pub
生成新的SSH密钥对
1.要生成新的SSH密钥对,请使用以下命令:
Windows / GNU / Linux / macOS上的Git Bash:
ssh-keygen -t rsa -C "your.email@example.com"
密钥类型可以用 -t 选项指定。如果没有指定则默认生成用于SSH-2的RSA密钥。这里使用的是rsa。
同时在密钥中有一个注释字段,用-C来指定所指定的注释,可以方便用户标识这个密钥,指出密钥的用途或其他有用的信息。所以在这里输入自己的邮箱或者其他都行。
输入完毕后程序同时要求输入一个密语字符串(passphrase),空表示没有密语。接着会让输入2次口令(password),空表示没有口令。3次回车即可完成当前步骤,此时[c盘>用户>自己的用户名>.ssh]
目录下已经生成好了。
视窗:
或者在Windows上,您可以下载PuttyGen 并按照此文档文章生成SSH密钥对。
2.下一步是复制公共SSH密钥,因为我们之后将需要它
要将公共SSH密钥复制到剪贴板,请使用以下相应的代码:
MacOS的:
pbcopy < ~/.ssh/id_rsa.pub
GNU / Linux(需要xclip包):
xclip -sel clip < ~/.ssh/id_rsa.pub
Windows命令行:
type %userprofile%\.ssh\id_rsa.pub | clip
Windows / Windows PowerShell上的Git Bash:
cat ~/.ssh/id_rsa.pub | clip
3.最后一步是将您的公共SSH密钥添加到GitLab。
登录github。打开setting->SSH keys,点击右上角 New SSH key,把生成好的公钥id_rsa.pub
放进 key输入框中,再为当前的key起一个title来区分每个key。
如果您手动复制了公共SSH密钥,请确保从ssh-rsa您的电子邮件开始复制整个密钥。
4.(可选)您可以通过运行ssh -T git@example.com
(替换example.com为GitLab域)并验证是否收到Welcome to GitLab消息来测试您的设置。
故障排除
如果在Git克隆上,系统会提示您输入密码,例如git@gitlab.com's password: SSH设置有问题。
- 确保您正确生成了SSH密钥对,并将公共SSH密钥添加到GitLab配置文件中
- 尝试使用ssh-agent本文档前面所述的手动注册私有SSH密钥
- 尝试通过运行调试连接ssh -Tv git@example.com(替换example.com为您的GitLab域)