git作为当前最受欢迎的版本控制软件,使用是很频繁的。但是有的小伙伴发现每次使用git push等操作时都要输入密码,实在是麻烦。这里对使用SSH与HTTPS两种通讯协议介绍一下免密码配置
区别
1.clone项目:使用ssh方式时,首先你必须是该项目的管理者或拥有者,并且需要配置个人的ssh key。而对于使用https方式来讲,就没有这些要求。
2.push:在使用ssh方式时,是不需要验证用户名和密码,如果你在配置ssh key时设置了密码,则需要验证密码。而对于使用https方式来讲,每次push都需要验证用户名和密码。
配置ssh key
1.设置Git的user name和email:(如果是第一次的话)
$ git config --global user.name "lian"// you name
$ git config --global user.email "lian@foxmail.com"//you email
配置完成, 可以查看配置信息
$ git config --global--list// 查看当前用户(global)配置$ git config --system --list// 查看系统config$ git config --local --list// 查看当前仓库配置信息
2.检查是否存在ssh key
$cd ~/.ssh
看一下有没有id_rsa和id_rsa.pub(或者是id_dsa和id_dsa.pub之类成对的文件),有 .pub 后缀的文件就是公钥,另一个文件则是密钥。
假如没有这些文件,甚至连 .ssh 目录都没有,可以用 ssh-keygen 来创建。该程序在 Linux/Mac 系统上由 SSH 包提供,而在 Windows 上则包含在 MSysGit 包里。
3.生成密钥
$ ssh-keygen -t rsa -C "lian@foxmail.com"
直接按Enter就行。然后,会提示你输入密码,如下(建议输一个,安全一点,当然不输也行):
Entersamepassphraseagain:[Type passphrase again]
完了之后,大概是这样:
Your public key has been savedin/home/you/.ssh/id_rsa.pub.The key fingerprintis:# 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db lian@foxmail.com
最后得到了两个文件:id_rsa和id_rsa.pub, 如果不是第一次,就选择overwrite。
到此为止,你本地的密钥对就生成了
4.添加公钥到你的远程仓库(github、gitLab等)
(1) 查看公钥
$ cat ~/.ssh/id_rsa.pubssh-rsaAAAAB3NzaC1yc2EAAAADAQABAAABAQC0X6L1zLL4VHuvGb8aJH3ippTozmReSUzgntvk434aJ/v7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8vR3c8E7CjZN733f5AL8uEYJA+YZevY5UCvEg+umT7PHghKYaJwaCxV7sjYP7Z6V79OMCEAGDNXC26IBMdMgOluQjp6o6j2KAdtRBdCDS/QIU5THQDxJ9lBXjk1fiq9tITo/aXBvjZeD+gH/Apkh/0GbO8VQLiYYmNfqqAHHeXdltORn8N7C9lOa/UW3KM7QdXo6J0GFlBVQeTE/IGqhMS5PMln3 lian@foxmail.com
(2)登录你的gitLab账号
Settings -> SSH Keys 复制上面公钥内容复制到"key"文本域内, 如果你的公钥复制正确的话, "title"域可以自动生成一个字符串(you email), 当然你可以修改为其他的名字
5.修改git remote url
查看当前remote url
$ git remote -v
origin https://gitlab-someaccount.net/frontend/someproject.git (fetch)
origin https://gitlab-someaccount.net/frontend/someproject.git (push)
复制ssh链接调整
git remote set-url origin git@github.com:someaccount/someproject.git
作者:曜灵SUN
链接:https://www.jianshu.com/p/d77f05ad14c1
网友评论