[技术分享] 入门 GitHub SSH Key配置
概念
- 什么是 SSH?
SSH (Secure Shell) 是一种加密网络协议,用于计算机之间进行加密登陆 - SSH的主要功能是什么?
身份验证成功后,SSH会建立一个加密会话通道,可进行远程命令执行,加密通信等任务 - SSH key 是什么?
SSH支持多种用户认证方式,主要有以下两种- 密码登录:输入用户名与密码
- 公钥认证:用户使用私钥认证,服务器验证对应公钥
- 为什么要配置 GitHub SSH Key
- 安全性更高
- 简化 git 仓库操作,无需输入账号密码
- GitHub 在为了安全考虑,已经禁止了密码验证的方式进行代码的拉取和推送,只能通过个人令牌或者 SSH Key 的方式替代
- SSH Key 如何生成?
SSH Key 生成支持两种算法,对称加密与非对称加密- 对称加密:
又称私钥加密,使用同一把密钥进行数据加密解密,在计算上更高效,加密解密速度更快,但是由于信息的发送方与接收方共享同一把密钥,因此安全性不足 - 非对称加密:
使用公钥和私钥以对密钥进行加密解密,其中公钥用于加密,而私钥用于解密。用公钥加密的信息只能用对应的私钥解密,因此公钥可以进行公开并自由分发,因为只要私钥没有泄漏,信息仍然安全
- 对称加密:
实践
-
本地配置(以Linux系统为例):
-
进入SSH密钥目录 查看目录中文件
cd ~/.ssh ls目录下一般只有一个文件:authorized_keys,但是如果看到以下两个文件,说明已经有对应的密钥生成了,可以跳过密钥生成步骤。两个文件名称与功能如下:
- id_rsa: 私钥,用于解密数据,绝对不能泄漏
- id_rsa.pub: 公钥,用于加密数据,可公开,一般配置到远程服务器或GitHub等代码托管平台上。
-
生成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或者其他用户下发现没有密钥,是正常的。同时, 私钥只对一台设备有效,如果更换设备,请重新设置密钥
至此,我们本地的密钥已经生成完毕。
-
-
GitHub 端配置:
-
权限分类
GitHub 对于 SSH Key 的配置一般有两种,如下所示,此处我们主要进行用户级别的配置。- 仓库级别配置, 提供针对单个仓库的权限访问,位置为 仓库主页> Settings> Deploy Keys
- 用户级别配置,提供用户拥有的所有仓库的权限访问,位置为 用户头像> settings> SSH and GPG Keys> New SSH Key
-
配置
进行添加时,我们可以看到如下界面

- 标题:随便填写
- Key Type:
在此说明下gitHub SSH Key分类:- Authentication Key 认证密钥:
用于身份验证,以便进行克隆,推送,拉取等操作 - Signing Key 签名密钥:
用于对于提交和标签等进行密码学签名,以证明代码提交者身份。
此处我们选择的应该是 Authentication Key
- Authentication Key 认证密钥:
- Key: 密钥主体,之后将id_rsa.pub中的内容粘贴到此处即可
添加完成后,Web页面会显示添加成功
-
-
登陆并验证
本地控制台输入如下命令进行密钥验证ssh -T git@github.com #-T 禁止分配伪终端给ssh命令如果生成密钥时设置过密码,此处还需输入对应密码
控制台返回如下信息,说明验证成功Hi <UserName>! You've successfully authenticated, but GitHub does not provide shell access. -
拉取仓库:
使用如下命令拉取仓库git clone <SSHAddress>地址可以在与仓库 HTTP 地址相同的地方找到,位置为 仓库主页> Code> Code 按钮> SSH 面板找到
例:git clone git@github.com:userName/repositoryName.git
文章推荐
- SSH-Keygen用法: https://www.cnblogs.com/yanglang/p/9563496.html
总结
以上流程均由本人实践并验证,如果环境不一致请以当前环境为准,如有疏漏错误或相关讨论欢迎评论区留言,感谢您的观看
850

被折叠的 条评论
为什么被折叠?



