https和SSH区别
- 前者可以随意克隆github上的项目,而不管是谁的;而后者则是你必须是你要克隆的项目的拥有者或管理员,且需要先添加 SSH key ,否则无法克隆。
- https url 在push的时候是需要验证用户名和密码的;而 SSH 在push的时候,是不需要输入用户名的,如果配置SSH key的时候设置了密码,则需要输入密码的,否则直接是不需要输入密码的。
关于SSH
使用SSH协议,我们可以连接并验证远程服务器和服务。使用SSH密钥,我们可以连接到GitHub,而无需在每次访问时提供用户名或密码。
检查是否已有SSH key
在生成SSH密钥前,应先检查是否已存在SSH key
- 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、输入下面的命令,将邮箱地址替换你的GitHub邮箱地址
$ ssh-keygen -t rsa -b 4096 -C " your_email@example.com"
复制代码
各参数含义:
-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 git@github.com
复制代码
回车后出现(如果设置了密码,则需输入密码):
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 git@github.com:AccountName/Project-name.git
复制代码
之后再查看远程地址:
$ git remote -v
origin git@github.com:AccountName/Project-name.git (fetch)
origin git@github.com: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 git@github.com
如果想修改SSH key密码,如下操作:
$ cd ~/.ssh/
复制代码
这里修改rsa类型密钥的密码:
$ ssh-keygen -f id_rsa -p
复制代码
-f
{keyfile};-p
表示请求修改私钥的密码,而不是创建一个新的私钥.
然后按照提示输入你的old passphrase
和new passphrase
就OK了。
也可以通过GitHub Help了解更多
GitHub: ScoutYin