如何为 Git Shell 命令使用不同的私有 SSH 密钥

使用 SSH 密钥比密码更安全,这也适用于 Git。然而,与密码不同的是,更改 SSH 密钥或管理多个密钥更加困难。不过,通过编辑 SSH 配置,您可以使用不同的密钥连接到多个 Git 存储库。

SSH 如何与 Git 一起工作?

当您使用 SSH 而不是 HTTPS 时,Git 不仅仅使用您的私钥进行身份验证——它实际上建立了与远程服务器的真实 SSH 连接。它默默地执行此操作,因此您可能不知道它正在运行的命令,但是它在底层使用ssh 。

因为它使用您的默认ssh 命令,所以它就像您自己运行它一样,并使用您在~/.ssh/id_rsa。那么可能不是您想要的,所以要更改它,您需要编辑 SSH 的配置,而不是 Git 的配置。

制作新的 SSH 密钥

首先,您需要一个人来执行此操作,并且执行此操作非常容易。只需运行并使用 标志ssh-keygen 指定一个新的键名。-f这将创建一个私钥和一个带有.pub 扩展名的公钥。

ssh-keygen -t rsa -f ~/.ssh/github

编辑 ~/.ssh/config

SSH 的配置文件允许设置“Hosts”,它将根据您连接的内容进行匹配,并允许修改ssh使用的文件。

这将允许您对所有请求使用与主密钥不同的 SSH 密钥github.com,但是如果您想为单独的 Git 存储库使用两个不同的密钥怎么办?例如,一个用于您的工作帐户,一个用于您的个人帐户。

好吧,您需要使用相同的主机定义两个具有不同名称的配置:

Host personal
  Hostname github.com
  IdentityFile ~/.ssh/githubpersonal
  IdentitiesOnly yes

Host work
  Hostname github.com
  IdentityFile ~/.ssh/githubwork
  IdentitiesOnly yes

通常这会导致配置冲突,但 Git 提供了一种解决方法。如果您有一个与本地存储库相关联的远程存储库(如 Github),请将其删除:

git remote remove origin

然后,不要添加github.com 为远程,而是将其替换为 SSH 配置文件中的主机名称。Git 将识别这一点,并使用此 SSH 主机进行连接。您可以为每个存储库设置单独的主机。

git remote add origin git@personal:username/repository.git

手动覆盖

如果你不想弄乱 SSH 配置,或者只是想暂时覆盖它,Git 也提供了GIT_SSH_COMMAND 环境变量。你可以

GIT_SSH_COMMAND='ssh -i ~/.ssh/github -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'

您之后在同一 shell 会话中运行的任何 Git 命令都将使用该 SSH 命令,而不是默认命令。您还可以使用GIT_SSH.

The post 如何为 Git Shell 命令使用不同的私有 SSH 密钥 first appeared on Linux迷.

版权声明:
作者:admin
链接:https://www.techfm.club/p/25731.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>