Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Git SSH key #2

Open
ScoutYin opened this issue Mar 16, 2018 · 0 comments
Open

Git SSH key #2

ScoutYin opened this issue Mar 16, 2018 · 0 comments
Labels
Git About Git SSH SSH key

Comments

@ScoutYin
Copy link
Owner

ScoutYin commented Mar 16, 2018

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_rsaid_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,进行一下链接测试

回车后出现:

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. 可能是远程仓库地址换了

如果想修改SSH key密码,如下操作:

$ cd ~/.ssh/ 

然后修改rsa类型密钥的密码:

$ ssh-keygen -f id_rsa -p  

然后按照提示输入你的old passphrasenew passphrase就OK了。

GitHub Help了解更多

@ScoutYin ScoutYin added Git About Git SSH SSH key labels Mar 16, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Git About Git SSH SSH key
Projects
None yet
Development

No branches or pull requests

1 participant