首页 > 解决方案 > 在 Windows 上通过 JetBrains IDE(即 PyCharm)使用 Git 时如何自动使用特定的 SSH 密钥?

问题描述

在 Windows 上通过 PyCharm 使用 Git 时,我想使用特定的 SSH 密钥。

我尝试过的事情:

我还可以做些什么?

标签: windowsgitpycharmjetbrains-idessh-keys

解决方案


显然 JetBrains IDE(如 PyCharm)使用 Windows 命令行与 git 交互。
这里

所以第一步是启动 Windows 命令提示符并检查是否可以通过这种方式使用带有特定 SSH 密钥的 Git。
就我而言,这是不可能的,即使我已经配置了config位于~/.ssh/config(通过 Git Windows 访问时)或C:\Users\<Me>\.ssh\config.
这就是为什么我的问题中提到的 SO 帖子没有解决我的问题。

第二步是找出当通过 Windows 命令提示符访问时 Git 使用的是哪个配置文件。
ssh_config为我提供了一个线索,即 Windows 上的 Git 可以使用一个名为(而不是)的内部 ssh 配置文件,该文件config位于 git.exe 附近(而不是在您的 homedir 的子目录中)。我使用which
找到了 Git 的位置。 所以我正在寻找的配置位于.where gitC:\Program Files\Git-2.16.1\cmd\git.exe
C:\Program Files\Git-2.16.1\etc\ssh\ssh_config

第三步是调整该ssh_config文件类似于该config文件。
对我来说,这看起来像这样:

Host <some-name>
        HostName gitlab.com
        IdentityFile C:\Users\<Me>\.ssh\<my-non-default-key>
        # Prevents usage of the default IdentityFile
        # See: https://stackoverflow.com/a/11251797
        IdentitiesOnly yes
        # Prevents warning when pulling from Gitlab.
        # See: https://stackoverflow.com/a/67556915
        UpdateHostKeys no

第四步也是最后一步是更改 Git 存储库中的远程,使其使用文件<some-name>中指定的名称ssh_config
首先使用git remote -v.
这给出了这样的结果:
git@gitlab.com:some/subdirs/to/the/repository.git
现在换出文件中指定的gitlab.com部分,如下所示:<some-name>ssh_config
git remote set-url origin git@<some-name>:some/subdirs/to/the/repository.git

概括:

  • 当使用像 PyCharm 这样的 JetBrains IDE 时,它使用 Git 而不是 Windows 命令提示符
  • 在 Windows 命令提示符中找出 Git 的位置
  • 调整位于此 Git 位置的 ssh_config 文件
  • 设置存储库的远程 url,使其使用 ssh_config 文件中指定的主机名

推荐阅读