一、关于ssh是什么?

http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html

二、需求:

一台电脑上(Mac os)管理多个ssh key,可以任意切换,达到多用户(账号)使用不同ssh提交代码。

以下利用gerrit和github账号来做例子。

1)生成ssh key

ssh-keygen -t rsa -C "youremail@yourcompany.com" 

若一路回车(密码可以不写),这样只会在~/.ssh/ 目录下生成 id_rsa 和 id_rsa.pub 两个文件。为了区分,我们在第一个回车后设置路径:

Enter file in which to save the key (/root/.ssh/id_rsa):~/.ssh/文件名 

由此我们分别为gerrit和github生成对应的公钥和私钥,完成后的目录:

id_rsa_gerrit
id_rsa_gerrit.pub
id_rsa_github
id_rsa_github.pub

2)设置ssh key的代理

1、 首先查看代理

ssh-add -l 

若提示

Could not open a connection to your authentication agent.

则系统代理里没有任何key,执行如下操作

exec ssh-agent bash 

若系统已经有ssh-key 代理 ,可以删除

ssh-add -D

2、 添加私钥

ssh-add ~/.ssh/id_rsa_gerrit
ssh-add ~/.ssh/id_rsa_github

3、添加公钥

在对应的gerrit和github的ssh管理页面,添加对应的公钥(.pub 文件内容),保存到代码管理服务器。

4、添加和编辑配置文件config

在 ~/.ssh 目录下新建一个config文件

touch ~/.ssh/config 

添加内容

# gerrit
Host gerrit.xxxx.com
HostName gerrit.xxxx.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_gerrit
user gerrit # github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github
user git

当然也可以利用nano命令来创建和编辑

nano ~/.ssh/config 

如此,ssh就会根据登陆的不同域,来读取对应的私钥文件

5、测试

ssh -T git@github.com 

若出现

Hi XXX! You've successfully authenticated, but GitHub does not provide shell access. 

则表示成功。

若出现

permission denied (publickey) 

请检查github的ssh管理里添加的公钥是否正确。

6、其他

提交代码到gerrit失败,报错为

remote: ERROR: In commit xxxxxxxxxxxxxxxxxxxxxxxx
remote: ERROR: committer email address aaaaa@aaa.com
remote: ERROR: does not match your user account.
remote: ERROR:
remote: ERROR: The following addresses are currently registered:
remote: ERROR: bbbbbbb@bbbbbb.com
remote: ERROR:
remote: ERROR: To register an email address, please visit:
remote: ERROR: http://xxxx/xxxx

此报错并非你之前设置管理多个ssh出现问题,而是因为你当前git用户信息和你提交代码的服务器注册的用户信息不一致,即服务器检查了你的用户信息,进行了拒绝。

解决方法如下:

1.编辑.gitconfig

打开~/.gitconfig文件
将原来的
name = aaaaa
email = aaaaa@aaa.com
改成你当前的
name = bbbbb
email = bbbbb@ bbb.com

2.更改提交

git commit --amend --author 'bbbbb <bbbbb@ bbb.com>' 

当然你也可以这样重新提交

git reset HEAD^
git add -A
git commit -m “xxxx”

转自:http://blog.csdn.net/wwmusic/article/details/51027458

Mac下一台电脑管理多个SSH KEY(转)的更多相关文章

  1. 同一台电脑管理多个SSH KEY

    同一台电脑关于多个SSH KEY管理 笔者之前为电脑中的homestead虚拟机配置过id_rsa,但现在因为想在github上搭建基于hexo的博客,所以需要配置github的ssh key,因此产 ...

  2. 同一台电脑关于多个SSH KEY管理

    运用shh -T -v git@github.com查看具体出错信息,再根据信息来调试    原文链接: http://yijiebuyi.com/blog/f18d38eb7cfee860c117d ...

  3. 一台电脑如何管理多个ssh key

    目录 一.生成ssh key 1.1 生成密钥(必须) 1.2 设置路径 (可选) 1.3 指定密语字符串(可选) 二.设置ssh key的代理 2.1. 首先查看代理 2.2. 添加私钥 三.添加公 ...

  4. github/gitlab 管理多个ssh key

    github/gitlab 管理多个ssh key 以前只使用一个 ssh key 在github上提交代码,由于工作原因,需要再添加一个ssh key在公司的 gitlab上提交代码,下面记录下配置 ...

  5. mac下开发IOS代码管理

    1.安装和配置subversion服务器 在windows 服务器上安装VisualSVN-Server,下载地址http://www.visualsvn.com/server/download/.采 ...

  6. windoes下一台电脑是无线/USB上网,如何将另一台电脑通过一拖一上网

    https://wenku.baidu.com/view/0c95830bbb68a98271fefa6e.html 一台电脑是无线上网,如何将另一台电脑通过一拖一上网有时候,在没有路由器的情况下,只 ...

  7. Mac下Supervisor进程监控管理工具的安装与配置

    Supervisor是一个类 unix 操作系统下的进程监控管理工具. Supervisor是由 Python 写成,可用 Python 的包安装管理工具 pip(Python Package Ind ...

  8. Mac下使用sshpass让iterm2支持多ssh登录信息保存

    mac下没有xshell等连接linux服务器的工具,当需要管理的服务器越来越多之后,密码管理就成了一个很头疼的问题,每次都需要去复制粘贴密码,浪费了很多时间,在网上查了不少资料,发现mac下可以使用 ...

  9. 同一台电脑使用多个ssh连接git,出现权限不够的问题

    在本地使用多个ssh连接git时出现如下错误: Permission denied (publickey,gssapi-keyex,gssapi-with-mic) 当一台电脑上同时使用多个ssh k ...

随机推荐

  1. Spring Boot配置FastJson报错'Content-Type' cannot contain wildcard type '*'

    升级到最新版本的fastjson以后报的错,查了一下资料,发现 fastjson从1.1.41升级到1.2.28之后,请求报错:json java.lang.IllegalArgumentExcept ...

  2. 自定义animate()引起的动画叠加

    当用户快速在某个元素多次执行动画时,会造成动画累积的现象.这时,就需要引入动画状态这个概念.判断元素是否处于动画状态中,如果处于,则不添加新动画 常常用于在设置动画之前未清除动画,造成的动画叠加.解决 ...

  3. Fork/Join 型线程池与 Work-Stealing 算法

    JDK 1.7 时,标准类库添加了 ForkJoinPool,作为对 Fork/Join 型线程池的实现.Fork 在英文中有 分叉 的意思,而 Join 有 合并 的意思.ForkJoinPool ...

  4. REQUEST的TRACE文件

    --REQUEST的TRACE文件 SELECT    'Trace Name: '       || DEST.VALUE       || '/'       || LOWER (DBNM.VAL ...

  5. Android-自定义开关

    效果图: 需要两张图片,一张图片为背景,一张图片为滑动的点 布局去指定一个自定义View对象: view.custom.shangguigucustomview.MyCustomSwitch < ...

  6. struct timeval 计时问题

    linux编程中,如果用到计时,可以用struct timeval获取系统时间.struct timeval的函数原型如下: struct timeval { __kernel_time_t tv_s ...

  7. linux的定制和发布(二)

    Linux的发布         有时候希望将定制好的Linux移植到其他的机器上使用,所以我们将定制好的Linux制作 成安装光盘的形式,可以方便在其他机器上安装. 为此我们要先制作一个引导系统,由 ...

  8. Docker在github上的站点

    https://github.com/docker (docker在github上的官方地址) https://github.com/dockerfile (docker官方镜像的Dockerfile ...

  9. Azure静态公网ip自助反解

    Linux下安装az工具,并登陆 az login 执行 az network public-ip update --resource-group ip所在资源组名称 --name ip对应资源名称 ...

  10. PostgreSQL查询数据(连接查询和子查询)

    原料 --用户表 create table "SysUser"( "UserId" serial, --用户Id,自增 "UserName" ...