SSH详解-4.多个ssh公钥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSH详解-4.多个ssh公钥相关的知识,希望对你有一定的参考价值。

参考技术A

SSH详解-1.ssh基础知识
SSH详解-2.ssh基本用法
SSH详解-3.密钥登陆
SSH详解-4.多个ssh公钥

前面说了利用密钥ssh可以快速登录,而不用每次都输入密码。

有时候在github和gitee中我们想用不同的密钥登录,或者某个服务器我们想使用另外一个公钥登录。这就情况下我们就需要配置多个公钥。

我们在生成私钥和公钥的默认的名称是 id_rsa 。前面已经详细说过密钥登录流程了,而密钥登录的时候会默认读取 id_rsa 密钥进行验证。因此,我们在使用多个密钥对的时候,必须告诉ssh哪个服务器验证用哪个密钥。

在一台电脑上生成多个公钥格式 ssh-keygen -t rsa -C 邮箱 公钥名 ,详细参数上一节已经说过了。

在 ~/.ssh/ 文件夹下面默认是没有config文件的,要配置多少个ssh公钥我们需要在该文件夹下新建一个 config 文件。

User 登录的用户名, IdentityFile 密钥文件路径, HostName 服务器ip地址或者域名。

Host 主机名,为什么把这个放到最后说呢?
需要注意一点配置完后应使用 ssh root@tenxun 来登录 ,也就是说@后面的是Host不是HostName。

如何从 gitbash 生成多个 SSH 公钥并在 Windows 机器上配置这些公钥? [关闭]

【中文标题】如何从 gitbash 生成多个 SSH 公钥并在 Windows 机器上配置这些公钥? [关闭]【英文标题】:How to generate multiple SSH public key and configure those on windows machine from gitbash? [closed] 【发布时间】:2019-10-24 08:06:37 【问题描述】:

先描述一下我遇到的问题:

我有两台电脑,一台是Windows机器,另一台是Linux机器。

我想在这两台机器上生成两个 SSH 公钥。一个用于我的 GitHub 帐户,另一个用于我的 GitLab 帐户。

我已使用以下命令生成公共 SSH 密钥,该密钥在我的 Linux 机器上完美运行,但在 Windows 机器上却不行。

命令:

第 1 步:生成 SSH 密钥

ssh-keygen

第 2 步:写下我要保存 SSH 密钥的目录和文件名。

[对于我来说,我在下面插入了windows路径]

/c/Users/PC_USER_NAME/.ssh/id_rsa_hub

第 3 步:从文件中获取公钥

cat ~/.ssh/id_rsa_hub.pub

这些步骤在我的 Linux 机器上完美运行,但在 Windows 上,我看到了身份验证错误。如何配置 SSH 公钥?

【问题讨论】:

这是话题,我已经回答了很多类似的问题。 【参考方案1】:

对于windows机器,你必须再做一项配置。只需按照以下步骤操作(如果您使用的是 Git Bash):

    进入.ssh目录/c/Users/PC_USER_NAME/.ssh/,点击鼠标右键选择“Git Bash Here” 使用以下命令创建一个名为“config”的文件:
touch config
    现在使用以下命令打开配置文件:
nano config
    现在在配置文件中写入以下行

假设您为 Github 创建了两个名为 id_rsa_hub 的文件,为 GitLab 创建了 id_rsa_lab 文件

# GITHUB
Host github.com
   HostName github.com
   PreferredAuthentications publickey
   IdentityFile ~/.ssh/id_rsa_hub

# GITLAB
Host gitlab.com
   HostName gitlab.com
   PreferredAuthentications publickey
   IdentityFile ~/.ssh/id_rsa_lab

【讨论】:

【参考方案2】:

尝试在 Windows 上使用 legacy format, in case the new OpenSSH one isn't fully recognized 生成 SSH 密钥,使用 -m PEM

ssh-keygen -m PEM -t rsa -P "" -f /c/Users/<yourLogin>/.ssh/id_rsa_hub
ssh-keygen -m PEM -t rsa -P "" -f /c/Users/<yourLogin>/.ssh/id_rsa_lab

然后在~/.ssh/config 文件中声明您的两个密钥:

Host gh
 HostName github.com
 User git
 IdentityFile /c/Users/<yourLogin>/.ssh/id_rsa_hub  

Host gl
 HostName gitlab.com
 User git
 IdentityFile /c/Users/<yourLogin>/.ssh/id_rsa_lab  

Host *
  PreferredAuthentications publickey

您的 SSH URL 将是 gh:&lt;user&gt;/&lt;repo&gt;gl:&lt;user&gt;/&lt;repo&gt;

【讨论】:

以上是关于SSH详解-4.多个ssh公钥的主要内容,如果未能解决你的问题,请参考以下文章

ssh使用详解

ssh配置详解及公私钥批量分发

Gitlab设置ssh密钥详解

[SSH服务]——SSH详解

ssh-keygen常用参数详解

windows下生成github ssh key详解