带有 ssh 的 Git 克隆适用于 Linux,但不适用于 Windows PowerShell
Posted
技术标签:
【中文标题】带有 ssh 的 Git 克隆适用于 Linux,但不适用于 Windows PowerShell【英文标题】:Git clone with ssh works in Linux but not in Windows PowerShell 【发布时间】:2021-01-07 10:38:37 【问题描述】:我在 GitHub 上有一个仓库。在 Linux 中使用 ssh 克隆它时效果很好:
> git clone git@github.com:henrikppersson74/frokenjennnie.git
Cloning into 'frokenjennnie'...
Enter passphrase for key '/home/----/.ssh/id_rsa':
.
.
Reinitialized existing Git repository in /home/*
在 Windows PowerShell 中执行相同操作时,它不起作用:
> git clone git@github.com:henrikppersson74/frokenjennnie.git
Cloning into 'frokenjennnie'...
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
我已将我的私人和公共 SSH 密钥从 Linux 复制到我的 Windows 机器上,它们以 id_rsa 和 id_rsa.pub 的形式存储在我的 ~/.ssh/ 中。 当我尝试从 PowerShell 使用 ssh 访问 github.com 时,它似乎有效:
> ssh git@github.com
Enter passphrase for key 'C:\Users\-----/\.ssh\id_rsa':
PTY allocation request failed on channel 0
Hi henrikppersson74! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.
这与我在 Linux 中执行此操作时得到的答案相同。我想这意味着我的 SSH-key par 没问题?
在 Windows 中的 Eclipse 中工作时,使用“Git Repositories”视图可以很好地克隆相同的存储库。
之前我在 PowerShell 中创建了新的 SSH 密钥并将公共密钥复制到 GitHub,但结果相同。
我的~/.ssh/config
文件如下所示:
Host github.com
HostName github.com
IdentityFile ~\.ssh\id_rsa
User git
ForwardAgent yes
我使用的是 Git 版本:
> git --version
git version 2.28.0.windows.1
不幸的是,我没有通过使用 --verbose 标志获得额外信息:
> git clone git@github.com:henrikppersson74/frokenjennnie.git --verbose
Cloning into 'frokenjennnie'...
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
将密钥添加到 ssh-agent 没有帮助:
> ssh-add C:\Users\-----\.ssh\id_rsa
Enter passphrase for C:\Users\-----\.ssh\id_rsa:
Identity added: C:\Users\------\.ssh\id_rsa (C:\Users\-----\.ssh\id_rsa)
> git clone git@github.com:henrikppersson74/frokenjennnie.git --verbose
Cloning into 'frokenjennnie'...
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
我的旧钥匙可以在某处兑现吗?
有人知道为什么我无法在 Windows PowerShell 中克隆我的存储库吗?如果能得到一些帮助,我将不胜感激。
【问题讨论】:
PowerShell 中的git
命令似乎使用了不同的密钥文件。从 Linux 系统复制的私钥需要密码,而 PowerShell 中的命令似乎找到了不需要密码的密钥。您在 Windows 系统上安装了哪些版本的 Git?请edit你的问题补充信息,不要用cmets来回答。我试图修复您的命令和输出的格式。我不确定我是否正确识别了格式化的含义。请检查一切是否正确,并在必要时进行修复。最好使用复制粘贴。
要添加到 @Bodo 的有用评论中,请尝试在 PowerShell 中将 --verbose
(即 2 个破折号)添加到您的 git clone
语句中,这可能会揭示它如何以及在何处找到(错误的)密钥文件跨度>
OMG,这有点尴尬……找到问题了。我不久前安装的一个程序更改了我的%HOME%
环境变量。当我把它改回C:\Users\<userid>
时,它就像魅力一样。非常感谢@Bodo 和@Mathias R. Jessen 指导我:-)!
@HenrikPPersson 您可以写下您如何调试和修复此问题的详细信息作为答案。
【参考方案1】:
问题是我的%HOME%
环境变量设置为错误的位置。当我把它改回C:\Users\<userid>
时,它就像魅力一样。显然 SSH 首先在 %HOME%\.ssh\
中查找密钥,然后在 %HOME%\.ssh\config\
中查找 en 条目,最后它使用添加到 ssh-agent
中的密钥。
【讨论】:
以上是关于带有 ssh 的 Git 克隆适用于 Linux,但不适用于 Windows PowerShell的主要内容,如果未能解决你的问题,请参考以下文章
适用于 Windows 7 的 Git 无法从 github 克隆存储库