TortoiseGit 的 SSH 配置原理解析
问题描述
在配置 TortoiseGit 的教程中,我们经常可以看到为了配置 ssh key 而使用 puttygen 生成 key,然后再进行很多操作。而有时我们不做任何配置就能使用之前在 git bash 中配置过的 ssh key。
原因分析
Tortoisegit 使用 TortoiseGitPlink 作为默认的 ssh 客户端。而 PuTTY and TortoiseGitPlink 是不读取 .ssh/config 的配置的。这两者的配置都是写在注册表中的。
但是,在 Settings/Network/SSH 这里填写 ssh.exe
的话,会使用 PATH
中的 ssh.exe,也就是 openssh,openssh 是会读取 .ssh/config 的。因此就能与 git bash 共用 key ,不必使用 TortoiseGitPlink 及 putty 版本的 key 了。
另外,填写 ssh.exe 不必写全称。如果把 SSH client 这里填写的内容清空的话,就会变成使用 TortoiseGitPlink.或者也可以主动写成:<这里填 TortoiseGit 安装目录>\bin\TortoisePlink.exe
以使用 TortoisePlink。
总结
- 当 TortoiseGit 使用 openssh 作为 ssh client 时,.ssh/config 里面的配置会生效,于是 git bash 能访问的库,用 TortoiseGit 也能访问。
- 当 TortoiseGit 使用 TortoiseGitPlink 作为 ssh client 时,.ssh/config 里面的配置无效,需要按照一些步骤生成 putty 版本的 key 并设置好。
- 在比较高版本的TortoiseGit 和 windows 中,ssh.exe 默认就填写了,也就是默认 openssh 作为 ssh client。但是如果 ssh.exe 找不到了(可能由于 PATH 改变或者系统中没有 ssh.exe而导致),那么 TortoiseGitPlink 就会变成默认使用的 ssh 客户端,这样从 openssh 切到了 TortoiseGitPlink 就会导致之前配置好的库无法再 ssh 访问了。
参考
PuTTY and TortoiseGitPlink do not respect .ssh/config (as described in e.g. Multiple GitHub Accounts & SSH Config or https://gist.github.com/jexchan/2351996). Both tools store, like Windows tools, their configuration in registry.
https://*.com/q/3225862/3906760
https://tortoisegit.org/support/faq/#sshconfigignored
Windows下TortoiseGit和Git配置使用同一ssh私钥
TortoiseGit git ssh 配置 详细步骤