ssh-key 与 git账户配置以及多账户配置,以及通信方式从https切换到ssh
参考:http://www.cnblogs.com/dubaokun/p/3550870.html
单用户情况:
ssh-add id_rsa
如果出现Could not open a connection to your authentication agent的错误,就试着先用以下命令:
|
1
2
|
ssh-agent bashssh-add id_rsa |
添加完之后 登陆Github 点击 网页右上侧的 Account Setting 按钮 - 选择 ssh-keys 点击Add SSH Key ,在title中输入名字,然后将公约即id_rsa.pub添加到ssh-key处。
在git bash的命令行中输入
ssh -T git@github.com 如果能正常访问即可
|
1
2
3
4
|
$ ssh -T git@github.comEnter passphrase for key 'C:/Users/kunkun/.ssh/github.rsa':Hi kunkun01! You've successfully authenticated, but GitHub does not provide shell access. |
多账户又分为两种情况
也可以参考老外写的 Git config for mutiply SSH keys
1、针对同一个服务器的同用户(比如 我平时开发开源的小东东,有的是一个账号是公司的账号对外开源项目用的,另外我自己也比较崇尚开源,所以自己也有了Github账号)
2,针对不同服务器的用户(现在pass平台 部署应用都是通过git来管理的,比如常见的Openshift,Heroku appfog等,在这里我也注册了账号)
在我们访问git服务器的时候,如果通过ssh的方式话,访问不同的服务器要使用不同的ssh-key。经过在第一步的过程中,在创建ssh-key的默认命名为id_rsa,如果使用不同的账户的,必须得给不同的key设置不同的名字,否则如果继续使用默认名字的话,会把之前的id_rsa覆盖掉。
具体操作如下
如果拥有多个Git远程仓库,尤其是其中一个是工作中使用的仓库,只使用一个ssh key安全性很低,建议为不同Git远程仓库配置不同的ssh key。
预操作
取消git全局设置
git config --global --unset user.name git config --global --unset user.email为每个项目单独配置 user.name 和 user.email
git config user.name "yourname" git config user.email "youremail"已经在本地存在的项目,只需再配置一下 user.name 和 user.email 即可,不需要额外的操作。
注意 :这里配置的 name 和 email 要针对具体项目来配置,对应不同远程仓库的项目 name 和 email 可能并不一致。
user2是我的另外一个Github账户
1、新建user2的SSH Key
|
1
2
3
4
5
|
#新建SSH key:$ cd ~/.ssh # 切换到C:\Users\Administrator\.sshssh-keygen -t rsa -C "mywork@email.com" # 新建工作的SSH key# 设置名称为id_rsa_workEnter file in which to save the key (/c/Users/Administrator/.ssh/id_rsa): id_rsa_work |
2、新密钥添加到SSH agent中
因为默认只读取id_rsa,为了让SSH识别新的私钥,需将其添加到SSH agent中:
ssh-add ~/.ssh/id_rsa_work
如果出现Could not open a connection to your authentication agent的错误,就试着用以下命令:
ssh-agent bash ssh-add ~/.ssh/id_rsa_work
(第二步 好像没什么作用)
3、修改config文件 将账户以及git服务器与对应的密钥关联。在~/.ssh目录下找到config文件,如果没有就创建:
touch config
然后修改如下: 我的config配置如下:

# 该文件用于配置私钥对应的服务器 # Default github user(first@mail.com) Host github.com HostName github.com User git IdentityFile C:/Users/Administrator/.ssh/id_rsa # second user(second@mail.com) # 建一个github别名,新建的帐号使用这个别名做克隆和更新 Host github2 HostName github.com User git IdentityFile C:/Users/Administrator/.ssh/id_rsa_work

其规则就是:从上至下读取config的内容,在每个Host下寻找对应的私钥。这里将GitHub SSH仓库地址中的git@github.com替换成新建的Host别名如:github2,
那么原地址是:git@github.com:funpeng/Mywork.git,
替换后应该是:github2:funpeng/Mywork.git.
4、用记事本打开新生成的~/.ssh/id_rsa2.pub文件,将里面的内容添加到GitHub后台。
可不要忘了添加到你的另一个github帐号下的SSH Key中。
5、测试:
|
1
2
3
|
$ ssh -T git@github.comHi BeginMan! You've successfully authenticated, but GitHub does not provide shell access. |
$ ssh -T github2 Hi kunkun01! You've successfully authenticated, but GitHub does not provide shell access.
6、应用
测试成功,那么我尝试在我的work目录下克隆我@126.com账号下的远程仓库。如下:
|
1
2
3
4
5
6
|
$ git clone github2:kunkun01/Mywork.gitCloning into 'Mywork'...remote: Counting objects: 3, done.remote: Total 3 (delta 0), reused 0 (delta 0)Receiving objects: 100% (3/3), done.Checking connectivity... done |
如果你只是通过这篇文章中所述配置了Host,那么你多个账号下面的提交用户会是一个人,所以需要通过命令git config --global --unset user.email删除用户账户设置,在每一个repo下面使用git config --local user.email '你的github邮箱@mail.com' 命令单独设置用户账户信息
https切换到ssh
查看一下push方式
git remote -v

下面把它换成ssh方式的。
移除旧的http的origin
git remote rm origin

添加新的git方式的origin
git remote add origin git@github.com:UncleYong/git_test.git

再查看一下push方式
git remote -v

再次push一下,已经不需要输入用户名密码了
git push origin

git push --set-upstream origin master 【以后输入git push就可以了】

ssh-key 与 git账户配置以及多账户配置,以及通信方式从https切换到ssh的更多相关文章
- Git仓库由HTTPS切换成ssh秘钥连接
Git关联远程仓库可以使用https协议或者ssh协议. [特点/优缺点] ssh: 一般使用22端口: 通过先在本地生成SSH密钥对再把公钥上传到服务器: 速度较慢点 https: 一般使用443端 ...
- git生成公钥public key并添加SSH key。git乌龟gerrit下推送git【server sent :publickey】
一.key 码云链接:http://git.mydoc.io/?t=180845#text_180845 博客链接: 方式一:https://blog.csdn.net/xb12369/article ...
- TortoiseGit的ssh key和Git的ssh key
情景模拟: 你使用Git+TortoiseGit对项目进行版本控制,本地库(自己电脑建立的.git)与远程库(如GitLab上建立)通信需要使用ssh验证,你用git生成公钥并保存到了Gitlab上, ...
- git配置SSH Key,上传本地代码至github
git配置全局的name和email git config --global user.name "name" git config --global user.email &qu ...
- Git Gui、Ssh key的使用和ideaui配置使用Git解决冲突(下)
目的: 1.Git Gui的使用 2.Ssh key 介绍及使用 2.1小结:https 和 SSH 的区别 3.Idea配置使用并使用git 4.ideaui使用Git冲突问题解决 Git Gui的 ...
- git配置多个ssh key
随着工作的深入,我们通常都会有多个git账户.比如公司gitlab一个账户,github或gitee有一个账户.而平时我们又回通过 配置ssh公私钥认证的方式省去繁琐的登录远程仓库的操作,不同的git ...
- Git与GitHub学习笔记(七)Windows 配置Github ssh key
前言 SSH是建立在应用层和传输层基础上的安全协议,其目的是专为远程登录会话和其他网络服务提供安全性的保障,用过SSH远程登录的人都比较熟悉,可以认为SSH是一种安全的Shell.SSH登录是需要用户 ...
- git 配置免密上传,配置ssh key
1.windows 打开git bash 控制台,linux 直接打开命令控制台,输入 ssh-keygen 一直enter 下一步 2.生成的文件windows 存放在c://users 路径下,l ...
- Git秘钥生成以及Gitlab配置(附以下问题解决方法:Key is invalid Fingerprint cannot be generated)
在进行Git密钥配置时,总是提示: “The form contains the following errors:Key is invalidFingerprint cannot be genera ...
随机推荐
- Golang中进行reslice时的注意事项
先看下面代码: package main import "fmt" func main() { slice := []int{0, 1, 2, 3, 4, 5, 6, 7, 8} ...
- Linux系统mysql使用(一)
一.安装 sudo apt-get update #更新软件源 sudo apt-get install mysql-server #安装mysql 二.启动和关闭 service mysql sta ...
- 抓包工具之fiddler
fiddler手机抓包的原理与抓pc上的web数据一样,都是把fiddler当作代理,网络请求走fiddler,fiddler从中拦截数据,由于fiddler充当中间人的角色,所以可以解密https ...
- css 图片文字垂直居中
先来看张图片 相信很多css新手遇到过这种问题,就是当图片和文本显示在一行的时候,效果很奇葩,文字和图片没法对齐, 这时我们需要做的是: 1,先给块级元素设置 display: inline-bloc ...
- axios的增删改查。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- JS实用小函数 数据是否合法或存在 获取当前日期时间
1.判断数据是否合法或存在 //判断数据是否合法或存在 function isNotNull(data) { if(data === "" || data === undefine ...
- CPU Cache 机制以及 Cache miss
CPU体系结构之cache小结 1.What is cache? Cache是用来对内存数据的缓存. CPU要访问的数据在Cache中有缓存,称为“命中” (Hit),反之则称为“缺失” (Miss) ...
- java学习之—链表(3)
/** * 使用链表实现队列 * Create by Administrator * 2018/6/19 0019 * 下午 4:37 **/ public class Link { public l ...
- python 列表、元组、字典
一.列表 [ ] 如下的列子都可以成为列表,c=[1,2,3,4,5,6],d=["abc", "张三",“李四”],e=[1,2,3,"abc&qu ...
- SpringBoot之整合Mybatis范例
依赖包: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http:/ ...