更新时间:2023-08-07 GMT+08:00

SSH密钥

什么是SSH密钥

当您需要将代码推送到代码托管仓库或从代码托管仓库下拉代码时,代码托管仓库需要验证您的身份与权限,SSH是对代码托管服务进行远程访问的身份验证方式。

  • SSH密钥是一种加密的网络传输协议,在电脑与您帐号下的代码托管服务之间建立安全连接。
  • 在一台电脑上配置了SSH密钥并添加公钥到代码托管服务中后,所有该帐号下的代码仓库与该台电脑之间都可以使用该密钥进行连接。
  • 不同的用户通常使用不同的电脑,在使用SSH方式连接代码仓库前需要在自己电脑生成自己的SSH密钥,并设置到远程仓库中。

生成并设置您的SSH密钥

以下介绍生成公钥和绑定的方法。

  1. 安装Windows Git Bash客户端
  2. 检查您的计算机是否已经生成了密钥。

    在本地Git客户端中执行命令,尝试显示ssh密钥。

    cat ~/.ssh/id_rsa.pub
    • 如果提示“No such file or directory”如下图,则说明您这台计算机没有生成过SSH密钥,请从3向下执行以生成并配置SSH密钥。

    • 如果至少返回了一组密钥如下图,则说明您这台计算机已经生成过SSH密钥,如果想使用已经生成的密钥请直接跳到4,如果想重新生成密钥,请从3向下执行。

    • 如果您想在一台计算机上同时管理多个密钥,请参考如何在一台电脑上,配置多个SSH Key

  3. 生成SSH密钥。

    在本地Git客户端中执行命令以生成新的SSH密钥:
    ssh-keygen -t rsa -C "Your SSH key comment"

    请按照下面提示操作,上图所示为密钥已生成成功。

    ①首先会提示您输入密钥的存储地址,一般直接回车使用默认即可。

    ②如果您本地路径下已经有密钥,会询问您是否将其覆盖,填写“n”即选择不覆盖,会退出本次密钥生成操作,填写“y”继续生成密钥,本案例填写“y”并回车。

    ③接下来会提示您为密钥设置密码和重新输入密码,如果不想设置密码,直接回车即可。

    • 如果设置密码,则生成的私钥文件是AES-128-CBC加密后存储的。(建议使用)
    • 如果直接回车,不输入密码,则生成的私钥文件id_rsa是明文存储在本地的,请妥善保管。

  4. 复制SSH公钥到剪切板。

    根据您的操作系统,选择相应执行命令,可将SSH公钥复制到您的剪切板,以Windows为例,无回显则为复制成功
    • Windows:
      clip < ~/.ssh/id_rsa.pub
    • Mac:
      pbcopy < ~/.ssh/id_rsa.pub
    • Linux (xclip required):
      xclip -sel clip < ~/.ssh/id_rsa.pub

  5. 登录您的代码托管服务仓库列表页,单击右上角昵称,单击“个人设置 > SSH密钥管理”,进入页面。

  6. “SSH密钥管理”页面,单击“添加SSH密钥”,弹出“添加SSH密钥”页面。

  7. “标题”中为您的新密钥起一个名称、将您在4中复制的SSH公钥粘贴进“密钥”中,勾选“我已阅读并同意 《隐私政策声明》 和 《CodeArts服务使用声明》”,单击“确定”,页面会提示您操作成功。

    • 同一个SSH密钥不能重复添加,如果添加失败,请检查您是否已经添加过这个密钥、粘贴时前后是否有多余的空格。
    • 添加成功后,可以在“SSH密钥管理”页面查看到您添加的密钥,当您确认不再使用时,可以将其删除。
    • SSH密钥与仓库部署密钥的区别为,前者与用户/计算机关联,后者与仓库关联;SSH密钥对仓库有读写权限,部署密钥对仓库是只读权限。

验证SSH密钥是否绑定成功

当SSH密钥绑定成功后,您可以在客户端对您有访问权限的仓库进行一次SSH-clone操作,如果克隆成功了,则说明密钥设置成功。

如果是第一次使用ssh克隆仓库到本地,客户端会弹出“The authenticity of host *.*.com can't be established. RSA key...(yes/no)?”的提示,输入yes后表示信任方可继续。