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

以下利用bitbucketgithub账号来做例子。

一、生成ssh key

1.1 生成密钥(必须)

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

注解:

  • 密钥类型可以用 -t 选项指定。如果没有指定则默认生成用于SSH-2的RSA密钥。这里使用的是rsa
  • 同时在密钥中有一个注释字段,用-C来指定所指定的注释,可以方便用户标识这个密钥,指出密钥的用途或其他有用的信息。所以在这里输入自己的邮箱或者其他都行
  • 若一路回车(密码可以不写),这样只会在~/.ssh/ 目录下生成 id_rsa 和 id_rsa.pub 两个文件

1.2 设置路径 (可选)

为了区分,我们在第一个回车后设置路径,进行第二步

id_rsa_bitbucket
id_rsa_bitbucket.pub id_rsa_github
id_rsa_github.pub

1.3 指定密语字符串(可选)

  • 输入完毕后程序同时要求输入一个密语字符串(passphrase),空表示没有密语。接着会让输入2次口令(password),空表示没有口令。3次回车即可完成当前步骤,此时~/.ssh目录下文件已经生成好了。
  • 建议输一个,安全一点,当然不输也行,应该不会有人闲的无聊冒充你去修改你的代码



完了之后,大概是这样:

到此为止,你本地的密钥对就生成了。

二、设置ssh key的代理

2.1、 首先查看代理

ssh-add -l

若提示

Could not open a connection to your authentication agent.

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

exec ssh-agent bash

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

ssh-add -D

2.2、 添加私钥

ssh-add ~/.ssh/id_rsa_bitbucket
ssh-add ~/.ssh/id_rsa_github

三、添加公钥

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

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

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

touch ~/.ssh/config

添加内容

# git@bitbucket.org
Host bitbucket.org
HostName bitbucket.org
PreferredAuthentications publickey
IdentityFile ~/.ssh/github/id_rsa_bitbucket # git@github.com
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github

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

nano ~/.ssh/config

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

五、测试

ssh -T HostName

ssh -T git@github.com

若出现

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

则表示成功。

若出现

permission denied (publickey)

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

六 为不同项目设置不同的git账号

设置了全局的git用户,所有的git项目都会使用这个用户名和邮箱,如下设置的:

git config --global user.name 'Username'
git config --global user.email 'UserEmail'

如果你在另一个项目中想使用另一个git账号,就要为当前项目设置指定的账号和邮箱,在当前项目中设置如下命令:

git config user.name 'AnotherName'
git config user.email 'AnotherEmail'

使用git config --list 就可以看到全局的git配置和当前项目的git配置了

一台电脑如何管理多个ssh key的更多相关文章

  1. 在同一台电脑上添加多个ssh key

    1.创建新的ssh key: ssh-keygen -t rsa -C "your_email@email.com" 然后让你输入新的文件名称,这里设置为new # 设置名称为En ...

  2. Mac下一台电脑管理多个SSH KEY(转)

    一.关于ssh是什么? http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html 二.需求: 一台电脑上(Mac os)管理多个ssh ...

  3. github/gitlab 管理多个ssh key

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

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

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

  5. github/gitlab同时管理多个ssh key

    之前一直用github,但是github有一个不好的地方,要是创建私有的项目的话需要付费,而gitlab上则可以免费创建管理私有的项目.由于最近想把自己论文的一些东西整理一下,很多东西还是不方便公开, ...

  6. github、gitlab 管理多个ssh key

    第一种方法: 通过 git 命令行来操作 1.cd ~/.ssh 2.ls 注:如果.ssh 目录下有文件存在那么表示之前添加过 3. ssh-keygen -t rsa -C "xxxxx ...

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

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

  8. Git生成多个ssh key

    在实际的工作中, 有可能需要连接多个远程仓库, 例如我想连接私有仓库.GitLab官网.GitHub官网, 那么同一台电脑就要生成多个ssh key: ssh-keygen -t rsa -C &qu ...

  9. Git Gui、Ssh key的使用和ideaui配置使用Git解决冲突(下)

    目的: 1.Git Gui的使用 2.Ssh key 介绍及使用 2.1小结:https 和 SSH 的区别 3.Idea配置使用并使用git 4.ideaui使用Git冲突问题解决 Git Gui的 ...

随机推荐

  1. Python实现自动化监控远程服务器

    最近发现Python课器做很多事情,在监控服务器有其独特的优势,耗费资源少,开发周期短. 首先我们做一个定时或者实时脚本timedtask.py,让其定时监控目标服务器,两种方式: 第一种: #!/u ...

  2. egret Tiledmap编写障碍物的思路

    egret Tiledmap编写障碍物的思路 获取控制对象下一刻移动的坐标,将其转换成瓦片坐标,如果getTileGIDAt(根据瓦片坐标获取瓦片id)的值不为0,说明对象将要移动的位置有障碍物,不做 ...

  3. awk 实用案例介绍

    awk 简介 • awk是 3 个姓氏的首字母,代表该语言的 3 个作者 • awk的版本有很多,包括: 旧版 awk,新版 awk(nawk), GNUawk(gawk)等 • awk程序有 awk ...

  4. 【笔记】nginx部署静态网站

    安装nginx 本地到官网下载,然后把压缩包传到服务器上 安装三个依赖 apt-get install libpcre3 libpcre3-dev apt-get install zlib1g-dev ...

  5. Python基础之JSON

    作用 对Python对象进行序列化,便于存储和传输 Python对象与JSON字符串相互转换 Python对象转JSON字符串 import json data = [ { 'a' : 1, 'b' ...

  6. lqb 基础练习 闰年判断

    基础练习 闰年判断 时间限制:1.0s   内存限制:256.0MB     问题描述 给定一个年份,判断这一年是不是闰年. 当以下情况之一满足时,这一年是闰年: 1. 年份是4的倍数而不是100的倍 ...

  7. 学习记录:《C++设计模式——李建忠主讲》3.“组件协作”模式

    “组件协作”模式:现代软件专业分工之后的第一个结果是“框架与应用程序的划分”,“组件协作”模式通过晚期绑定,来实现框架与应用程序之间的松耦合,是二者之间协作时常用的模式.典型模式:Template M ...

  8. vue cli3.0 封装组件全局引入js文件并发布到npm

    首先用 vue create创建一个项目 当前的项目目录是这样的: 首先需要创建一个 packages 目录,用来存放组件 然后将 src 目录改为 examples 用作示例 二.修改配置 启动项目 ...

  9. PHP开发各种规范,面试秘籍!

    基本约定 源文件 代码使用<?php开头,忽略闭合标签?> 文件格式必须是无BOM UTF-8格式 一个文件只声明一种类型,如class和interface不能混写在一个源文件中 缩进 使 ...

  10. URL基本语法

    1.URL全称为Uniform Resource Locator,即统一资源定位符.对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址.互联网上的每个文件都有一个唯一 ...