当前位置: 首页 > 知识库问答 >
问题:

仅在git Bash中使用SSH的git克隆,不在Windows CMD上使用

邹正阳
2023-03-14

因此,我遵循了本教程,学习了如何使用Windows CMD为github设置SSH,在我使用

git clone git@github.com:{myusername}/{myrepo}.git

我在哪里得到的

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-Tgit@github.com,我也会收到预期的html" target="_blank">消息,告诉我我已通过身份验证。

在搔了一会儿脑袋之后,我决定在git bash上试试。

我注意到的第一件事是跑步

 ssh-add -l

在git bash中,我得到了代理没有身份。但是当我在Windows CMD上运行相同的命令时,我得到了所有的SSH密钥?

因此,在git bash中添加ssh密钥后,我可以克隆我的存储库。

那么,为什么它只能在git bash上执行,而不能在cmd或powershell上执行呢?这与他们使用不同的ssh代理有关吗?如果是这样,我如何将它们同步在一起?

此外,当我运行以下命令时

ssh -Tv git@github.com

用我得到的命令

debug1: identity file C:\\Users\\{myuserdirectory}/.ssh/id_rsa type 0
debug1: key_load_public: No such file or directory

但有了git bash我

debug1: identity file /c/Users/{myuserdirectory}/.ssh/id_rsa type 0

另一个区别是在windows cmd中我没有得到任何deg1的实例:将尝试key:......

当我退出git bash并打开另一个git bash终端,再次运行ssh-add-l时,它返回代理没有身份。即使在我之前添加了它之后,它也好像只保留了每个会话,这也是不可取的。

在此方面的任何帮助都将不胜感激!

共有3个答案

应子真
2023-03-14

如果您安装Git bash,Windows上有一个奇怪的错误。打开命令提示符,然后执行

ls ~/.ssh

如果发现此文件夹已创建,请将公钥和私钥从用户文件夹复制到以下路径:

cp C:\Users\username\.ssh\id_* ~/.ssh/

出于某种原因,windows命令提示符在您第一次执行git克隆时创建此路径,之后它只请求git@gitlab / git@github暗语

燕璞
2023-03-14

看起来您的ssh-agent没有运行或无法识别您的ssh密钥

试试这个:

# add the default ~/.ssh keys to the ssh-agent
ssh-add

# restart the ssh-agent
eval $(ssh-agent)
# On windows:
start-ssh-agent

ssh-add将RSA或DSA标识添加到身份验证代理ssh-agent。
当不带参数运行时,它会添加文件~/. ssh/id_rsa~/. ssh/id_dsa~/. ssh/标识

可以在命令行上指定替代文件名

晏鸿畅
2023-03-14

可能您是对的,他们使用的是不同的ssh代理。我也有同样的问题,这个答案对我帮助很大:https://stackoverflow.com/a/40720527/6486458

默认情况下,git在C:\Program Files\git\usr\bin中引用自己的ssh。我添加了GIT\u SSH环境变量,并将其设置为C:\Windows\System32\OpenSSH\SSH。exe。这可以防止ssh版本之间的不一致。之后,git开始从git Bash和Windows cmd中按预期工作。

git留档:

GIT_SSH,如果指定,是当Git尝试连接到SSH主机时调用的程序而不是ssh。它的调用方式类似于$GIT_SSH[username@]host[-p

另请参见以下答案:https://stackoverflow.com/a/8713121/6486458

 类似资料:
  • 我别无选择,我必须使用git clone与ssh,所以在那之后,当我使用作曲家安装,它将下载一些依赖使用git clone ssh从比特桶当我尝试运行git clone使用SSH, 我得到这个输出 我不知道从哪里得到RSA密钥指纹SHA256: zzXQOXSRBEiUtuE8AikJYKwbHaxvSc0ojez9YXaGp1A当使用命令行ssh-keygen生成私钥和公钥时,我得到了RSA密钥

  • 我正在Windows 7上运行Netbeans 7.2,无法克隆repo。我之前使用的是Windows XP和Netbeans 7.1,没有任何问题。 我一直使用的过程是打开Pageant并加载我的密钥。然后在Netbeans中,我组建了一个

  • 我一直在编写bash脚本来使用SSH克隆私有Github存储库。需要遵循步骤- 使用SSH-keygen-t rsa-b 4096-C“您的电子邮件”生成SSH密钥 如何在bash脚本中自动化步骤3。任何帮助都将不胜感激。

  • 问题内容: 我已经通过Windows 2008 32位上的Git / SSH在Jenkins中成功克隆了Git存储库。当我尝试在64位Windows 2008上执行相同操作时, 控制台输出 页面卡在此处: 当我停止构建时(在卡住了几分钟之后),我得到了其余的错误消息: 我可以通过两台机器上的Jenkins 通过Git只读URL克隆存储库 我可以从两台计算机上的命令行通过Git / SSH URL进

  • 问题内容: 我正在尝试使用composer从不包含在packagist中的 github中自动克隆一个git存储库,但是它无法正常工作,我无法弄清楚我在做什么错。 我认为我必须将其包括在“存储库”中,如下所示: 然后可能在“要求”部分列出它。它应该类似于此示例,但不起作用。它只给出此错误: 您的要求无法解决为一组可安装的软件包。 有没有人已经尝试做过这样的事情? 问题答案: 在2013年撰写本文时

  • 我已经复制了这个代码,似乎是各种工作dockerfile周围,这里是我的: 这给了我错误 这是我第一次使用dockerfile,但是从我所读到的(以及从工作配置中获取的),我不明白为什么这不起作用。 我的id_rsa和我的dockerfile在同一个文件夹中,是我的本地密钥的副本,可以克隆这个回购没有问题。 编辑: 在我的dockerfile中,我可以添加: 它打印出正确的密钥,所以我知道它被正确