相关文章:
【Gitee】配置与克隆代码 git的具体应用
1.在git中clone项目有两种方式:HTTPS和SSH,它们的区别如下:
- HTTPS:不管是谁,拿到url随便clone,但是在push的时候需要验证用户名和密码;
- SSH:clone的项目你必须是拥有者或者管理员,而且需要在clone前添加SSH Key。SSH 在push的时候,是不需要输入用户名的,如果配置SSH key的时候设置了密码,则需要输入密码的,否则直接是不需要输入密码的。
简答来说,https是克隆时不校验,但是提交时校验,ssh正好相反,先校验,那么必须先进行配置才行,否则会报permission denied (publickey错误
2. 在git中使用SSH Key的步骤:
为什么要创建公钥和预配置呢?首先ssh模式目的是为了让clinet和git server能够安全通信,所以采用了数字签名RSA或者DSA来完成这个操作,ssh加密原理需要预配置公钥,否则怎么能保证安全通信呢。
2.1 检查电脑是否存在SSH Key:
$ cd ~/.ssh
$ ls
如果存在id_rsa.pub
或 id_dsa.pub
文件,说明文件已经存在,跳过创建SSH Key步骤。
2.2 创建SSH Key
$ ssh-keygen -t rsa -C "your_email@example.com"
该命令是在linux环境执行的,如果是windows,可以在git bash里面执行,git bash自带环境。并且生成一对秘钥,分别是私钥和公钥,公钥需要注册到git server端
return后(出现如下命令)会让你输入push时的密码(不是git登录密码),一般推荐跳过,连续直接按enter,出现如下命令说明SSH Key创建成功了:
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/zxh/.ssh/id_rsa): '表明生成的是id_rsa.pub'
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/zxh/.ssh/id_rsa
Your public key has been saved in /c/Users/zxh/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:/Xj65ex4INpKaFjNtqfWCIUUvGCTUQezhXz+/B7X5WU advancina@163.com
The key's randomart image is:
+---[RSA 3072]----+
| .*=+o |
| = ==. |
| . +.= |
| ooo. |
| ..So. E|
| o.o .+o. +o|
| . o.o=oo+.o o|
| . .+ooo.B. |
| .o..o+o+ |
+----[SHA256]-----+
windows下为例,生成的路径是用户/.ssh目录下:
需要注意的是,id_rsa和id_rsa.pub是成对生成的,二者必须匹配才能工作。当你把id_rsa.pub公钥导入到远程服务器时,本地目录下的 C:\Users\zhangsan.ssh\id_rsa私钥是不能删除的,也不能挪位置;当你调用ssh -keygen命令重新生成密钥对时,本地的C:\Users\zhangsan.ssh\id_rsa私钥会被覆盖,因此,你需要把新的公钥导入到远程服务器才能继续工作
查看SSH Key:
$ cat ~/.ssh/id_rsa.pub
将查看的SSH Key导入到git中设置好,导入步骤参见 【Gitee】配置与克隆代码 中的 <2.2 导入公钥>章节。
测试SSH Key:
$ ssh -T git@git.oschina.net
出现Welcome to XXX就可以了。
参考
git中https和SSH的区别
permission denied (publickey)问题的解决
ssh-keygen 的 详解 ssh-keygen命令详解
git的ssh key使用和原理 git 使用ssh原理