在Windows上通过JetBrains IDE(即PyCharm)使用Git时,如何自动使用特定的SSH密钥



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

我尝试过的东西:

  • 尝试通过调整~/.ssh/config(和权限)来配置SSH,如下所述:

    • https://stackoverflow.com/a/31044770/8488985
    • https://stackoverflow.com/a/11251797
    • https://superuser.com/a/232406(有关权限的评论,请参阅)

    这在Git-Bash命令行中使用时启用了Git,但在使用IDE时不起作用。

  • 尝试将SSH密钥添加到ssh-agent,如下所述:

    • https://stackoverflow.com/a/4565746

    同样,这在Git-Bash命令行中使用时启用了Git,但在使用IDE时不起作用。

我还能做什么?

JetBrains IDE(如PyCharm)使用Windows命令行与git进行交互
请参阅此处

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

第二步是找出Git在通过Windows命令提示符访问时使用的配置文件
这为我提供了一个线索,即Windows上的Git可以使用一个名为ssh_config(而不是config)的内部ssh配置文件,该文件位于Git.exe附近(而不是在homedir的子目录中)
我使用where git找到了Git的位置,它表示C:Program FilesGit-2.16.1cmdgit.exe
所以我要查找的配置位于C:Program FilesGit-2.16.1etcsshssh_config

第三步是调整类似于config文件的ssh_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存储库中的远程,使其使用ssh_config文件中指定的名称<some-name>
首先使用git remote -v获取原始遥控器
这给出了如下内容:
git@gitlab.com:some/subdirs/to/the/repository.git
现在将gitlab.com部分替换为ssh_config文件中指定的<some-name>,如下所示:
git remote set-url origin git@<some-name>:some/subdirs/to/the/repository.git

摘要:

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

最新更新