ssh密钥连接电脑和gitLab

403 阅读3分钟

SSH密钥用于在您的电脑和GitLab建立安全连接。那么应该如何连接?

我搜的chatgpt,跟着它连接好的。先把chatgpt的内容展示出来。后面是我的连接过程。

我搜的chatgpt。

使用SSH密钥与GitLab通信

Git是一种分布式版本控制系统,允许你在本地工作,然后将更改分享或推送到服务器。在这种情况下,推送的服务器是GitLab。GitLab使用SSH协议来安全地与Git进行通信。当你使用SSH密钥认证到GitLab远程服务器时,每次都不需要输入用户名和密码。

什么是SSH密钥

SSH使用两个密钥,一个公钥和一个私钥:

  • 公钥可以分发。
  • 私钥需要保护。

上传公钥不会暴露数据,但上传时要确保不会误上传私钥。你可以使用私钥签署提交,从而使GitLab和你的数据更加安全。这种签名可以通过任何使用公钥的人验证。

先决条件

使用SSH与GitLab通信,你需要:

  • OpenSSH客户端(GNU/Linux、macOS和Windows 10预装)。
  • SSH版本6.5或更高版本。早期版本使用的MD5签名不安全。

查看系统中安装的SSH版本,运行命令 ssh -V

支持的SSH密钥类型

GitLab支持以下SSH密钥类型:

  • ED25519
  • ED25519_SK(GitLab 14.8及更高版本)
  • ECDSA_SK(GitLab 14.8及更高版本)
  • RSA
  • DSA(GitLab 11.0弃用)
  • ECDSA

查看现有的SSH密钥对

查看是否已有密钥对:

  1. 进入你的主目录。

  2. 进入.ssh子目录。如果不存在,说明你没有使用过SSH。

  3. 查看是否存在以下格式的文件:

    • 公钥:id_ed25519.pubid_rsa.pub
    • 私钥:id_ed25519id_rsa

生成SSH密钥对

如果没有现有的SSH密钥对,生成新的:

  1. 打开终端。

  2. 运行命令 ssh-keygen -t <密钥类型> -C "<注释>",例如:

    ssh-keygen -t ed25519 -C "your_email@example.com"
    
  3. 按提示操作,生成公钥和私钥。

将SSH公钥添加到GitLab账户

  1. 复制公钥文件的内容。例如,在macOS上:

    tr -d '\n' < ~/.ssh/id_ed25519.pub | pbcopy
    
  2. 登录GitLab。

  3. 在右上角选择头像,点击 Edit profile

  4. 在左侧栏选择 SSH Keys

  5. Key 框中粘贴公钥内容。

  6. 添加描述并选择用途,然后点击 Add key

验证连接

  1. 打开终端,运行命令 ssh -T git@gitlab.example.com
  2. 如果首次连接,会提示验证GitLab主机的真实性,输入 yes 并回车。
  3. 再次运行命令 ssh -T git@gitlab.example.com,应该会看到 "Welcome to GitLab, @username!" 消息。

故障排除

  • 如果运行 git clone 时提示输入密码,确保你正确生成并添加了SSH密钥。
  • 手动注册私钥,使用命令 eval $(ssh-agent -s)ssh-add <私钥路径>

按照以上步骤,你可以成功配置并使用SSH密钥与GitLab进行安全通信。

我跟着它的步骤一步步实现的。

首先在设置>系统>可选功能

image.png

下载好后win+R,打开终端。

cd %USERPROFILE%

输入'cd .ssh'出现问题,就说明没有.ssh。

cd .ssh

没有.ssh怎么办?

创建目录:

mkdir .ssh

cd .ssh

生成SSH密钥对

配置自己的邮箱"your_email@example.com"

ssh-keygen -t rsa -b 2048 -C "your_email@example.com"

按提示操作

  • 系统会提示你选择保存密钥文件的路径,按回车使用默认路径(C:\Users<你的用户名>.ssh\id_ed25519id_rsa)。
  • 系统会提示你输入一个passphrase(密钥密码)。你可以选择输入,也可以直接按回车跳过(不推荐)。

打开生成的公钥文本,复制。自己的C路径是啥样自己看。

notepad C:\Users\Shanshan\.ssh\id_rsa.pub

win+R打开终端。

@gitlab.example.com是自己的gitlab的地址。

ssh -T git@gitlab.example.com

成功了!

image.png