文章目录
1.SSH了解
SSH是一种建立在应用层基础上的网络安全协议,用于计算机之间的加密登录。
1.1.使用密钥
SSH主要使用对称密钥和非对称密钥两种密钥。
1.1.1.对称密钥
- 加密和解密用的是同样的密钥
- 效率高,加密强度高
- 密钥越大,加密越强,但加密和解密过程会变慢
- 发送密钥过程中有可能会被黑客拦截,通常将对称密钥进行非对称加密后再传送给需要它的人。
1.1.2.非对称密钥
- 密钥分为公钥和私钥
- 私钥只能由一方安全保管
- 公钥可以发给多个请求它的设备
- 用其中一个密钥加密,只有对应的那个密钥才能解密。
- 安全,但与对称密钥相比效率要低
1.1.3.什么时候使用哪种密钥
- SSH数据传输时候基本上所有过程都是使用对称密钥进行加密(速度快)
- 只有在刚开始创建连接阶段(加密对称密钥)和身份认证握手阶段才使用非对称加密。
1.2.提供两种安全登录验证(使用非对称密钥)
SSH提供基于口令的安全验证和基于密钥的安全验证两种验证方式。
1.2.1.基于口令的安全验证(密码口令登录)
客户端输入密码进行登录,由服务端生成公钥和私钥。
- 客户端连接上服务端之后,服务端把自己的公钥传给客户端。
- 客户端输入密码通过公钥加密之后传给服务端。
- 服务端根据私钥解密得到登录密码,若正确则让客户端登录。
1.2.2.基于密钥的安全验证(公钥登录)
客户端无需输入密码即可登录,由客户端生成公钥和私钥。
- 客户端将公钥存储到服务端上。
- 客户端请求登录,服务端用相应的公钥加密一个随机数发送给客户端。
- 客户端用自己的私钥解密得到随机数,经其他加密处理后发送给服务端。
- 服务端对随机数进行同样的处理,接着和接收到的数据对比,如果一致则让客户端登录。
1.2.3.RSA算法
因为基于密钥的安全验证(公钥登录)默认选择RSA加密算法,这里介绍一下。
- 目前最常用的非对称加密算法
- 由麻省理工的三个大佬弄出来,RSA分别是他们的姓的首字母。
- 使用
- 加密:公钥加密私钥解密
主要用于将数据资料加密不被其他人非法获取,只有自己独有的私钥才能解密。 - 认证:私钥加密公钥解密
主要用于身份验证,判断某个身份的真实性。
- 加密:公钥加密私钥解密
1.3.使用Git生成公钥
Win+R打开运行,然后输入cmd进入命令行界面,输入(已安装好git的情况下)
ssh-keygen -t rsa -C "你的邮件地址"
- ssh-keygen表示采用基于密钥的安全验证。
- -t:选择生成密钥的算法,有RSA和DSA两种算法。
- rsa:RSA算法,ssh-keygen默认使用rsa密钥,可不写-t rsa。
- -C表示提供一个注释,用于识别这个密钥,通常用个人的邮件地址作为注释,因为其具有唯一性。
输入上述指令回车后,将弹出以下提示
Enter file in which to save the key (……): //生成保存密钥的文件夹,回车即可
Enter passphrase(empty for no passphrase): //是否要为私钥设置密码,不设置直接回车就行
Enter same passphrase again: //重复输入密码,不设置继续回车
……
Your public key has been saved in…… //找到这一行,后面显示的就是公钥文件所存储的位置,
//找到公钥文件后用记事本打开,全部复制。
1.4.将公钥存储到GitCode
- 打开GitCode网站,点击设置
- 点击SSH密钥,将刚才复制到的公钥复制到文本框内即可
- 公钥标题随意起一个
- 点击添加密钥。
2.使用Git上传代码
2.1.在GitCode网站新建一个项目。
- 点击头像左边的加号
- 点击新建项目,选择创建空白项目
- 填写项目名称、项目描述
- 勾选公开和使用自述文件初始化仓库
- 点击新建项目完成
2.2.克隆该初始化项目到本地。
- 点击绿色的克隆按钮
- 复制"通过SSH Clone项目"下方的链接
- 选择用于存放该项目文件夹的位置,不用自己新建一个项目文件夹。
- 在空白处右键,选择Git Bash Here命令行模式。
- 输入"git clone",敲个空格,然后右键Paste粘贴刚才复制的链接,最后回车。
参考:git clone git@gitcode.net:qq_51214556/test.git - 如果看到多行remote:开头的提示,说明克隆成功。
2.3.git配置
可以看见,当前路径生成了一个名称为项目名称的文件夹,双击进去有一个READER.md文件。
在git命令行界面输入
cd ./你的项目名称(即克隆文件夹名称) //回车后将进入项目的子目录里
git remote add origin 刚才复制的链接 //本地库关联远程库,origin是远程仓库链接的“别名”,后续会用到
git config --global user.name "用户名" //输入用户名和邮箱
git config --global user.email "邮件" //git的用户名和邮件用于让远程仓库记录哪次提交是由谁完成的,不会进行验证。
2.4.上传代码
上面已经双击进入项目文件夹的子目录,这时
- 在当前文件夹新建txt文本,打开随便输入内容,保存。
- 这里偷一下懒,我们右键打开Git GUI Here图形化界面。
- Git图形化界面分为4个部分,按方位分为:
工作区(改动后的文件都显示在这里) | 差异区(显示出文件的具体改动) |
---|---|
暂存区 | 提交说明(备注改动的内容和原因) |
- 看工作区有没有刚才新建的文本,没有就点一下"rescan"按钮重新扫描。
- 在工作区点击选中txt文本,快捷键Ctrl+T将其提交到暂存区。
- 在暂存区选中文本可以看见差异区显示出改动。
- 在提交说明处备注"谁:改动了什么,为什么",方便项目的其他人查看。
- 点击"commit"按钮提交,该版本的txt文本被备份到了本地库,需要的时候可以恢复某一版本。
- 点击"push"按钮将该版本的txt文本推送到GitCode的远程仓库上,这时将弹出一个窗口,默认推送的远程仓库是origin,也就是之前我们添加的那个SSH链接,这里直接选择"push"即可。
- 上传代码成功。
3.最后
- 我自己第一次操作的时候出现了某些问题,有些是步骤的问题,有些是配置的问题,但后续无法复现,所以记录可能会有纰漏,出现问题可以将错误提示在网上搜索解决。