[技术分享] 入门 GitHub SSH Key配置

[技术分享] 入门 GitHub SSH Key配置

概念

  1. 什么是 SSH?
    SSH (Secure Shell) 是一种加密网络协议,用于计算机之间进行加密登陆
  2. SSH的主要功能是什么?
    身份验证成功后,SSH会建立一个加密会话通道,可进行远程命令执行,加密通信等任务
  3. SSH key 是什么?
    SSH支持多种用户认证方式,主要有以下两种
    1. 密码登录:输入用户名与密码
    2. 公钥认证:用户使用私钥认证,服务器验证对应公钥
  4. 为什么要配置 GitHub SSH Key
    1. 安全性更高
    2. 简化 git 仓库操作,无需输入账号密码
    3. GitHub 在为了安全考虑,已经禁止了密码验证的方式进行代码的拉取和推送,只能通过个人令牌或者 SSH Key 的方式替代
  5. SSH Key 如何生成?
    SSH Key 生成支持两种算法,对称加密与非对称加密
    1. 对称加密:
      又称私钥加密,使用同一把密钥进行数据加密解密,在计算上更高效,加密解密速度更快,但是由于信息的发送方与接收方共享同一把密钥,因此安全性不足
    2. 非对称加密:
      使用公钥和私钥以对密钥进行加密解密,其中公钥用于加密,而私钥用于解密。用公钥加密的信息只能用对应的私钥解密,因此公钥可以进行公开并自由分发,因为只要私钥没有泄漏,信息仍然安全

实践

  1. 本地配置(以Linux系统为例):

    1. 进入SSH密钥目录 查看目录中文件

      cd ~/.ssh        
      ls
      

      目录下一般只有一个文件:authorized_keys,但是如果看到以下两个文件,说明已经有对应的密钥生成了,可以跳过密钥生成步骤。两个文件名称与功能如下:

      • id_rsa: 私钥,用于解密数据,绝对不能泄漏
      • id_rsa.pub: 公钥,用于加密数据,可公开,一般配置到远程服务器或GitHub等代码托管平台上。
    2. 生成SSH Key
      如果发现目录中没有对应文件,我们可以使用如下命令生成

      ssh-keygen -t rsa -C "comment"   #-C用于生成备注,以区分不同的密钥
      

      -t 参数指定的是加密算法,主要有 rsa 与 dsa 两种,此时我们选择默认的 rsa 算法, 想了解的同学可以留言,下次一起研究一下
      此时终端会问我们几个问题,如下

      $ Generating public/private rsa key pair.
      $ Enter file in which to save the key (/root/.ssh/id_rsa):  # 密钥保存文件,可自行指定,此次我们按Enter键使用默认文件即可
      $ Enter passphrase (empty for no passphrase):   # 设置密码 Enter键可跳过
      $ Enter same passphrase again:                  # 密码确认 Enter键可跳过
      

      注意: 不同的用户有不同的密钥,如果切换到root或者其他用户下发现没有密钥,是正常的。同时, 私钥只对一台设备有效,如果更换设备,请重新设置密钥
      至此,我们本地的密钥已经生成完毕。

  2. GitHub 端配置:

    1. 权限分类
      GitHub 对于 SSH Key 的配置一般有两种,如下所示,此处我们主要进行用户级别的配置。

      • 仓库级别配置, 提供针对单个仓库的权限访问,位置为 仓库主页> Settings> Deploy Keys
      • 用户级别配置,提供用户拥有的所有仓库的权限访问,位置为 用户头像> settings> SSH and GPG Keys> New SSH Key
    2. 配置
      进行添加时,我们可以看到如下界面
      在这里插入图片描述

      1. 标题:随便填写
      2. Key Type:
        在此说明下gitHub SSH Key分类:
        • Authentication Key 认证密钥:
          用于身份验证,以便进行克隆,推送,拉取等操作
        • Signing Key 签名密钥:
          用于对于提交和标签等进行密码学签名,以证明代码提交者身份。
          此处我们选择的应该是 Authentication Key
      3. Key: 密钥主体,之后将id_rsa.pub中的内容粘贴到此处即可
        添加完成后,Web页面会显示添加成功
  3. 登陆并验证
    本地控制台输入如下命令进行密钥验证

    ssh -T git@github.com   #-T 禁止分配伪终端给ssh命令
    

    如果生成密钥时设置过密码,此处还需输入对应密码
    控制台返回如下信息,说明验证成功

    Hi <UserName>! You've successfully authenticated, but GitHub does not provide shell access.
    
  4. 拉取仓库:
    使用如下命令拉取仓库

    git clone <SSHAddress>
    

    地址可以在与仓库 HTTP 地址相同的地方找到,位置为 仓库主页> Code> Code 按钮> SSH 面板找到
    例:

    git clone git@github.com:userName/repositoryName.git
    

文章推荐

  1. SSH-Keygen用法: https://www.cnblogs.com/yanglang/p/9563496.html

总结

以上流程均由本人实践并验证,如果环境不一致请以当前环境为准,如有疏漏错误或相关讨论欢迎评论区留言,感谢您的观看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值