Description
https和SSH区别
- 前者可以随意克隆github上的项目,而不管是谁的;而后者则是你必须是你要克隆的项目的拥有者或管理员,且需要先添加 SSH key ,否则无法克隆。
- https url 在push的时候是需要验证用户名和密码的;而 SSH 在push的时候,是不需要输入用户名的,如果配置SSH key的时候设置了密码,则需要输入密码的,否则直接是不需要输入密码的。
关于SSH
使用SSH协议,我们可以连接并验证远程服务器和服务。使用SSH密钥,我们可以连接到GitHub,而无需在每次访问时提供用户名或密码。
检查现有的SSH key
在生成SSH密钥前,应先检查是否已有SSH密钥对
- 1、打开Git Bash
- 2、输入
ls -al ~/.ssh
以查看是否存在现有密钥 - 3、检查目录列表是否已有类似
id_rsa
和id_rsa.pub
的两个文件,前者是密钥文件,后者是公钥文件
默认情况下,公钥的文件名是以下之一:
id_dsa.pub
id_ecdsa.pub
id_ed25519.pub
id_rsa.pub
如果未发现有类似的公钥和私钥对,则可以按照如下方法生成一个SSH key:
- 1、打开Git Bash
- 2、输入下面的命令,-C后面为你自定义的注释信息
ssh-keygen -t rsa -b 4096 -C " [email protected]"
各参数含义:
-t:密钥类型,一般为dsa,ecdsa,ed25519和rsa这几种,默认为rsa,可省略;
-b:密钥的位数;
-C:注释文字,比如邮箱。
- 3、当出现以下提示指定保存位置时可选择直接Enter回车,即选择默认保存位置
Enter a file in which to save the key (/c/Users/you/.ssh/id_rsa):[Press enter]
- 4、接着会提醒设置密码,可以直接回车回车,当然也可以选择设置密码
Enter passphrase (empty for no passphrase): [Type a passphrase]
Enter same passphrase again: [Type passphrase again]
到这里就生成了一个新的SSH key,可以使用ls命令查看生成后的文件目录:
- id_rsa和id_rsa.pub分别为私钥和公钥
新建一个config文件
touch ~/.ssh/config
然后在config文件中添加以下内容:
Host *.github.com
IdentityFile ~/.ssh/id_rsa
User '你的用户名'
接着将id_rsa.pub内的内容复制并添加到你的GitHub账户中(Settings->SSH and GPG keys->New SSH key)
OK,进行一下链接测试
ssh -T [email protected]
回车后出现:
Hi xxx! You've successfully authenticated, but GitHub does not # provide shell access.
就表示设置成功了,Bingo!
修改remote url
在你的项目目录下先使用git remote -v
查看远程地址
$ git remote -v
origin https://github.com/someaccount/someproject.git (fetch)
origin https://github.com/someaccount/someproject.git (push)
可以看出当前项目是使用https协议进行访问的,然后我们可以使用命令改成SSH协议进行访问:
git remote set-url origin [email protected]:AccountName/Project-name.git
之后再查看远程地址:
$ git remote -v
origin [email protected]:AccountName/Project-name.git (fetch)
origin [email protected]:AccountName/Project-name.git (push)
发现remote url已经变了。
然后你就可以愉快的使用git fetch, git pull , git push,再也不用输入烦人的密码了(如果设置了密钥密码passphrase,则会需要输入该密码)
tips:
有时候push不上去,提示 the project you were looking for could not be found. 可能是远程仓库地址换了
- git remote rm origin 删除
- 添加 git remote add origin [email protected]
如果想修改SSH key密码,如下操作:
$ cd ~/.ssh/
然后修改rsa类型密钥的密码:
$ ssh-keygen -f id_rsa -p
然后按照提示输入你的old passphrase
和new passphrase
就OK了。