在 Windows 上通过 JetBrains IDE(即 PyCharm)使用 Git 时如何自动使用特定的 SSH 密钥?
How to automatically use a specific SSH key when using Git through a JetBrains IDE (i.e. PyCharm) on Windows?
我想在 Windows 上通过 PyCharm 使用 Git 时使用特定的 SSH 密钥。
我尝试过的事情:
尝试通过调整 ~/.ssh/config
(和权限)来配置 SSH,如这些答案中所述:
- https://superuser.com/a/232406(请参阅有关权限的评论)
这在 Git Bash 命令行中使用时启用 Git,但是,在使用 IDE.
时它不起作用
已尝试将 SSH 密钥添加到 ssh-agent
,如此处所述:
同样,这在 Git Bash 命令行中使用时启用 Git,但是,在使用 IDE.[=20= 时它不起作用]
我还能做什么?
显然 JetBrains IDEs(如 PyCharm)使用 Windows 命令行与 git.
交互
参见 here
所以第一步是启动 Windows 命令提示符并检查您是否可以通过特定的 SSH 密钥使用 Git。
在我的情况下,这是不可能的,即使我配置了位于 ~/.ssh/config
的 config
文件(当通过 Git Windows 访问时)或 C:\Users\<Me>\.ssh\config
.
这就是为什么我的问题中提到的SO帖子没有解决我的问题。
第二步是确定 Git 在通过 Windows 命令提示符访问时使用哪个配置文件。
This 为我提供了 Windows 上的 Git 可以使用名为 ssh_config
(而不是 config
)并位于 [=65] 附近的内部 ssh 配置文件的线索=](而不是在您的主目录的子目录中)。
我使用 where git
找到了 Git 的位置,它表示 C:\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:
IdentitiesOnly yes
# Prevents warning when pulling from Gitlab.
# See:
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 时,它使用 Git 而不是 Windows 命令提示符
- 在Windows命令提示符
中找出Git的位置
- 调整位于Git位置的ssh_config文件
- 设置存储库的远程 url,使其使用 ssh_config 文件中指定的主机名
我想在 Windows 上通过 PyCharm 使用 Git 时使用特定的 SSH 密钥。
我尝试过的事情:
尝试通过调整
~/.ssh/config
(和权限)来配置 SSH,如这些答案中所述:- https://superuser.com/a/232406(请参阅有关权限的评论)
这在 Git Bash 命令行中使用时启用 Git,但是,在使用 IDE.
时它不起作用已尝试将 SSH 密钥添加到
ssh-agent
,如此处所述:同样,这在 Git Bash 命令行中使用时启用 Git,但是,在使用 IDE.[=20= 时它不起作用]
我还能做什么?
显然 JetBrains IDEs(如 PyCharm)使用 Windows 命令行与 git.
交互
参见 here
所以第一步是启动 Windows 命令提示符并检查您是否可以通过特定的 SSH 密钥使用 Git。
在我的情况下,这是不可能的,即使我配置了位于 ~/.ssh/config
的 config
文件(当通过 Git Windows 访问时)或 C:\Users\<Me>\.ssh\config
.
这就是为什么我的问题中提到的SO帖子没有解决我的问题。
第二步是确定 Git 在通过 Windows 命令提示符访问时使用哪个配置文件。
This 为我提供了 Windows 上的 Git 可以使用名为 ssh_config
(而不是 config
)并位于 [=65] 附近的内部 ssh 配置文件的线索=](而不是在您的主目录的子目录中)。
我使用 where git
找到了 Git 的位置,它表示 C:\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:
IdentitiesOnly yes
# Prevents warning when pulling from Gitlab.
# See:
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 时,它使用 Git 而不是 Windows 命令提示符
- 在Windows命令提示符 中找出Git的位置
- 调整位于Git位置的ssh_config文件
- 设置存储库的远程 url,使其使用 ssh_config 文件中指定的主机名