如果你已经有了一套名为 id_rsa 的公秘钥,将要生成另外一个公钥,比如 aysee ,你也可以使用任何你喜欢的名字。

步骤如下:

1、生成一个新的自定义名称的公钥:

1
ssh-keygen -t rsa -C "YOUR_EMAIL@YOUREMAIL.COM" -f ~/.ssh/aysee

  执行命令后,生成命名的公钥和生成默认公钥的步骤一样。

执行完成后,会在 ~/.ssh/目录下生成一个 aysee 和 aysee.pub 文件。

2、在 SSH 用户配置文件 ~/.ssh/config 中指定对应服务所使用的公秘钥名称,如果没有 config 文件的话就新建一个,并输入以下内容:

1
2
Host github.com www.github.com
  IdentityFile ~/.ssh/aysee

3、添加 aysee.pub 到你的git服务器网站上。

4、测试配置文件是否正常工作

1
ssh -T git@gitcafe.com

  如果,正常的话,会出现如下提示:

1
Hi USERNAME! You've successfully authenticated, but github does not provide shell access.

  如果出现如下提示,则说明有权限问题:

1
Permission denied (publickey)

  如果有权限问题的情况下,你对项目执行push操作的时候,会得到如下提示:

1
2
3
4
5
6
Warning: Permanently added the RSA host key for IP address '192.30.252.129' to the list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.
 
Please make sure you have the correct access rights
and the repository exists.

  

多用户时出现权限问题的原因:

github使用SSH与客户端连接。如果是单用户(first),生成密钥对后,将公钥保存至 GitHub ,每次连接时SSH客户端发送本地私钥(默认~/.ssh/id_rsa)到服务端验证。单用户情况下,连接的服务器上保存的公钥和发送的私钥自然是配对的。但是如果是 多用户 (first,second),我们在连接到second的帐号时,second保存的是自己的公钥,但是SSH客户端依然发送默认私钥,即first的私钥,那么这个验证自然无法通过。

解决ssh权限问题():

通常一台电脑生成一个ssh不会有这个问题,当一台电脑生成多个ssh的时候,就可能遇到这个问题,解决步骤如下:

1、查看系统ssh-key代理,执行如下命令

1
$ ssh-add -l

  以上命令如果输出  The agent has no identities. 则表示没有代理。如果系统有代理,可以执行下面的命令清除代理:

1
$ ssh-add -D

2、然后依次将不同的ssh添加代理,执行命令如下:

1
2
$ ssh-add ~/.ssh/id_rsa
$ ssh-add ~/.ssh/aysee

 你会分别得到如下提示:

1
2048 8e:71:ad:88:78:80:b2:d9:e1:2d:1d:e4:be:6b:db:8e /Users/aysee/.ssh/id_rsa (RSA)

  和

1
2
2048 8e:71:ad:88:78:80:b2:d9:e1:2d:1d:e4:be:6b:db:8e /Users/aysee/.ssh/id_rsa (RSA)
2048 a7:f4:0d:f1:b1:76:0b:bf:ed:9f:53:8c:3f:4c:f4:d6 /Users/aysee/.ssh/aysee (RSA)

  如果使用 ssh-add ~/.ssh/id_rsa的时候报如下错误,则需要先运行一下 ssh-agent bash 命令后再执行 ssh-add ...等命令

1
Could not open a connection to your authentication agent.

  

3、配置 ~/.ssh/config 文件

  如果没有就在~/.ssh目录创建config文件,该文件用于配置私钥对应的服务器

1
2
3
4
5
6
7
8
9
10
11
12
# Default github user(first@mail.com)
 
Host github.com
HostName github.com
User git
IdentityFile C:/Users/username/.ssh/id_rsa
 
# aysee (company_email@mail.com)
Host github-aysee
HostName github.com
User git
IdentityFile C:/Users/username/.ssh/aysee

  Host随意即可,方便自己记忆,后续在添加remote是还需要用到。 配置完成后,在连接非默认帐号的github仓库时,远程库的地址要对应地做一些修改,比如现在添加second帐号下的一个仓库test,则需要这样添加:

1
2
git remote add test git@github-aysee:ay-seeing/test.git
#并非原来的git@github.com:ay-seeing/test.git

  ay-seeing 是github的用户名

4、测试 ssh

1
ssh -T git@github.com

  你会得到如下提示,表示这个ssh公钥已经获得了权限

1
Hi USERNAME! You've successfully authenticated, but github does not provide shell access.

生成多个ssh密钥-(转自 破男孩)的更多相关文章

  1. 配置多个 git 账号的 ssh密钥

    背景 在工作中,我们通常会以 ssh 的方式配置公司的 git 账号,但是平时也会使用 github 管理自己的项目.因此,我们需要为自己的 github 创建一个新的 git 账号,这就需要生成新的 ...

  2. 配置多个git账号的ssh密钥

    博客改版,请直接访问新版文章:https://www.cnblogs.com/xiaoxi666/p/9975981.html 背景 我们在工作中会以 ssh 的方式配置公司的 git 账号,但是平时 ...

  3. 创建SSH密钥

    Step1: 检查SSH密钥 首先,打开终端,输入以下指令,查看是否已经生成SSH密钥. cd ~/.ssh ls # Lists the files in your .ssh directory 在 ...

  4. 如何配置 SSH 密钥连接 Git 仓库

    SSH 是 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定:是建立在应用层基础上的安全协议. SSH 是目前较可靠,专为远程登录会话和其 ...

  5. ssh-keygen生成git ssh密钥

    title: ssh-keygen生成git ssh密钥 date: 2018-05-07 08:49:21 tags: [git,ssh-keygen] --- ssh-keygen生成git ss ...

  6. jenkins SSH登录 Git配置(通过eclipse生成SSH 密钥)

    1.通过eclipse生成SSH 密钥 菜单栏的windows-->preferences-->General-->Network Connections-->SSH2--&g ...

  7. 生成ssh密钥

    打开Git Bash,生成ssh密钥: ssh-keygen -t rsa -C "your_email@youremail.com"

  8. 034_非交互自动生成 SSH 密钥文件

    #!/bin/bash#-t 指定 SSH 密钥的算法为 RSA 算法;-N 设置密钥的密码为空;-f 指定生成的密钥文件存放在哪里 rm -rf ~/.ssh/{known_hosts,id_rsa ...

  9. 如何在Windows中手动生成SSH密钥?(转)

    在Windows上,您可以通过多种方式创建SSH密钥.Windows需要SSH客户端,但在其操作系统上没有默认的SSH客户端.请注意,Windows目前正在测试本机OpenSSH应用程序,一般,不提倡 ...

随机推荐

  1. 记一次在virtualbox中安装windows7遇到增强功能安装分辨率的问题

    在windows7中遇到很多次安装好增强功能后并不能对其实现放大分辨率,使其跟随虚拟机界面大小而改变. 经过许多次的安装和恢复快照,发现了在设置中,显存的大小一直都是处于边缘的状态, 关闭虚拟机后,我 ...

  2. 将 Python 打包的 exe 进行反编译

    Python 打包成 exe 之后,是否能从二进制文件中恢复出源代码?没有加密的话是可以的. 首先需要解包. 直接从 github 上下载就行:https://github.com/counterce ...

  3. Compound Words UVA - 10391

      You are to find all the two-word compound words in a dictionary. A two-word compound word is a wor ...

  4. Linux(CentOS7)安装与卸载MySQL8.0图文详解

    Mysql数据库的安装对于开发者来说,是我们必然会面对的问题,它的安装过程其实并不复杂,并且网络上的安装教程也非常多,但是对于新手来说,各种不同形式的安装教程,又给新手们带来了要选择哪种方式进行安装的 ...

  5. 基于DRV8701的电机驱动设计

    栅极驱动芯片DRV8701使用的一些注意事项

  6. 1.7.8- HTML合并单元格

    跨行与跨列

  7. 11- jmeter主要元件

    元件分类 HTTP请求默认值(请求行,请求头,空行,消息体) HTTP信息头管理器: HTTPcookie管理器(1.更真实的模拟用户行为 ,多个请求的关联.第一个请求没有cookie第二个就带了co ...

  8. Google Hacking的用法

    目录 Google Hacking 基本搜索 高级搜索 Index of inurl Google Hacking Google Hacking 是利用谷歌搜索的强大,来在浩瀚的互联网中搜索到我们需要 ...

  9. Mybatis的初始化和结合Spring Framework后初始化的源码探究

    带着下面的问题进行学习: (1)Mybatis 框架或 Spring Framework 框架对数据层 Mapper 接口做了代理,那是做了 JDK 动态代理还是 CGLIB 代理? (2)Mappe ...

  10. HBASE-使用问题-split region

    问题描述: HBASE表的管理以REGION分区为核心,通常面临如下几个问题: 1) 数据如何存储到指定的region分区,即rowkey设计,region splitkey设计 2)设计的split ...