Windows下Git Clone报错:/u/.ssh/known_hosts存在违规RSA密钥
解决Windows下Git Clone提示远程主机标识变更(指向/u/.ssh/known_hosts)的问题
问题原因
你的Windows环境中Git可能调用了WSL(Windows Subsystem for Linux)的SSH客户端,而非Windows原生或Git for Windows自带的SSH。这导致Git读取的是WSL系统内的/u/.ssh/known_hosts文件(该文件第6行存储了旧的远程主机密钥),而非你删除的Windows用户目录下的C:\Users\<username>.ssh\known_hosts。Ubuntu上正常是因为它直接使用本地的~/.ssh/known_hosts,不存在旧密钥冲突。
解决步骤
1. 检查Git当前使用的SSH客户端
执行以下命令查看Git配置的SSH命令:
git config --get core.sshCommand
如果输出包含WSL路径(比如/usr/bin/ssh),说明Git在调用WSL的SSH。
2. 切换为Windows原生SSH客户端
执行以下全局配置,让Git使用Windows自带的OpenSSH:
git config --global core.sshCommand "C:/Windows/System32/OpenSSH/ssh.exe"
如果你的Git for Windows自带SSH,也可以指定其路径,比如:
git config --global core.sshCommand "C:/Program Files/Git/usr/bin/ssh.exe"
3. 清理WSL中的旧主机密钥(如果确实需要用WSL的SSH)
如果你想继续使用WSL的SSH,打开WSL终端,执行以下命令删除known_hosts中第6行的旧密钥:
sed -i '6d' ~/.ssh/known_hosts
或者直接删除整个known_hosts文件,重新克隆时会自动生成新的:
rm ~/.ssh/known_hosts
4. 临时指定SSH配置路径(单次克隆生效)
如果不想修改全局配置,可以在克隆时临时指定Windows的SSH配置文件路径:
GIT_SSH_COMMAND="ssh -F C:/Users/<username>/.ssh/config" git clone -b <branch> ssh://<host>
替换<username>为你的Windows用户名即可。
内容的提问来源于stack exchange,提问作者Rituraj Raman
相关产品推荐
相关产品推荐

