如何从 gitbash 生成多个 SSH public 密钥并在 windows 机器上配置这些密钥?
How to generate multiple SSH public key and configure those on windows machine from gitbash?
让我们先描述一下我遇到的问题:
我有两台电脑,一台是Windows机器,另一台是Linux机器。
我想在这两台机器上生成两个 SSH public 密钥。一个用于我的 GitHub 帐户,另一个用于我的 GitLab 帐户。
我使用以下命令生成了 public SSH 密钥,它在我的 Linux 机器上可以正常工作,但在 Windows 机器上却不行。
命令:
步骤 1: 生成 SSH 密钥
ssh-keygen
第二步:写下我要保存SSH密钥的目录和文件名。
[对于我的情况,我在下面插入了 windows 路径]
/c/Users/PC_USER_NAME/.ssh/id_rsa_hub
第 3 步:从文件中获取 public 密钥
cat ~/.ssh/id_rsa_hub.pub
这些步骤在我的 Linux 机器上完美运行,但在 Windows 上,我看到了身份验证错误。如何配置 SSH public 密钥?
对于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
尝试在 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:<user>/<repo>
或 gl:<user>/<repo>
让我们先描述一下我遇到的问题:
我有两台电脑,一台是Windows机器,另一台是Linux机器。
我想在这两台机器上生成两个 SSH public 密钥。一个用于我的 GitHub 帐户,另一个用于我的 GitLab 帐户。
我使用以下命令生成了 public SSH 密钥,它在我的 Linux 机器上可以正常工作,但在 Windows 机器上却不行。
命令:
步骤 1: 生成 SSH 密钥
ssh-keygen
第二步:写下我要保存SSH密钥的目录和文件名。
[对于我的情况,我在下面插入了 windows 路径]
/c/Users/PC_USER_NAME/.ssh/id_rsa_hub
第 3 步:从文件中获取 public 密钥
cat ~/.ssh/id_rsa_hub.pub
这些步骤在我的 Linux 机器上完美运行,但在 Windows 上,我看到了身份验证错误。如何配置 SSH public 密钥?
对于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
尝试在 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:<user>/<repo>
或 gl:<user>/<repo>