在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>.sshconfig
的config
文件
这就是为什么我的问题中提到的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文件中指定的主机名