多个 git 帐户:不使用 .ssh/config 或 SSH 代理

Posted

技术标签:

【中文标题】多个 git 帐户:不使用 .ssh/config 或 SSH 代理【英文标题】:Multiple git accounts: no .ssh/config or SSH agent usage 【发布时间】:2020-06-13 16:16:59 【问题描述】:

我想使用多个 Git 服务器帐户(使用 GitHub、GitLab、BitBubket 等中的任何一个)。

帐户通过其电子邮件地址 name1@email1.com 和 name2@email2.org 和 git 设置为在相关的 仓库

以下限制适用于“更改帐户工作流程”:

    不接触/更改 SSH 配置文件(例如~/.ssh/config 等)时 添加/删除/更改存储库或服务器。 不需要运行 SSH 代理,即没有 ssh-add ...。 无需更改环境变量。 不更改git clone <address> 指令。 将与 git 一起使用的 SSH 密钥与其他 SSH 密钥隔离开来。 在所有私有和公共存储库中使用相同的“更改帐户工作流程”。 “更改帐户工作流程”是一 (1) 个步骤/命令。 “更改帐户工作流程”是每个存储库一 (1) 次(即不是每个 时间您开始在存储库上工作)。

初始存储库设置(也是一次性活动)可能涉及超过 一步。 任何约定/假设都是可以接受的,只要它们不违反 约束。

不相关的问题:

这些是不满足约束条件的响应。 它们通常需要更改 ~/.ssh/config 和/或涉及 SSH 代理守护进程:

    handle-multiple-git-account using-multiple-git-accounts multiple-git-accounts-and-ssh-key multiple-github-accounts-ssh-config multiple-git-users-on-same-machine multiple-github-accounts-with-git-in-windows git-multiple-accounts-and-repository-problems ssh-config-to-access-multiple-repo-not-working multiple-github-accounts-on-the-same-computer can-i-specify-multiple-users-for-myself-in-gitconfig setting-up-ssh-config-file-for-multiple-codebase-accounts how-can-i-push-git-with-multiple-accounts-on-one-machine multiple-github-accounts-what-values-for-host-in-ssh-config how-to-configure-multiple-github-accounts-on-your-computer ssh-config-with-multiple-keys-for-multiple-gitlab-user-accounts github-multiple-accounts-permission-to-personalusername-reponame-git-denied-to

【问题讨论】:

【参考方案1】:

测试和工作:

一步“更改帐户工作流程”:

您在克隆后执行一次 - 对于任何拥有 已设置为支持使用多个 git 帐户提交的开发人员

git config --local --add include.path ../.git-config

现在,无论何时从该存储库提交/推送,您都将使用该存储库的帐户。 搬家时无需进行任何进一步的更改 进入/退出此存储库。

一步设置。

这就是您"设置以支持使用多个提交的开发人员的方式 git 帐户”

    克隆存储库并 Git 提交:
pushd /src/path/to/git/repo
  tee --append .git-config > /dev/null <<'EOF'
  [core]
    sshCommand = ssh -o StrictHostKeyChecking=no -o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null -o IdentitiesOnly=yes -i ~/.config/git/$(git config --get --local --includes user.email) -F /dev/null
  EOF
popd

假设

SSH 密钥文件被命名为&lt;name@email.com&gt;(私有)和&lt;name@email.com&gt;.pub (公开)。 SSH 密钥文件可以位于任何可通过 SSH 命令访问的位置。

注意: 不使用多个帐户的用户不受此影响。 他们只是在克隆后没有 Git 包含.git-config sn-p。 顺便说一句:SSH 密钥文件的位置是 XDG Base Directory specification,但您可以将 SSH 密钥放在最安全的地方,而不必更改 SSH 配置文件。

问题表明 Git 设置为使用用于命名 SSH 密钥文件的电子邮件地址进行提交,所以这已经完成了,但为了完整性:

git config --local user.email name1@email1.com

【讨论】:

以上是关于多个 git 帐户:不使用 .ssh/config 或 SSH 代理的主要内容,如果未能解决你的问题,请参考以下文章

Windows 的 .ssh/config 文件 (git)

linux修改ssh端口和禁止root远程登陆设置

如何通过 Windows Git 凭据管理器使用多个 Git 帐户

无法通过 ssh 连接到 Github,无法访问 .ssh.config

我可以使用git bash使用多个帐户吗?

git账号失效问题解决