858

我在 Mac Snow Leopard 上,我刚刚安装了git.

我刚试过

git clone git@thechaw.com:cakebook.git

但这给了我这个错误:

Initialized empty Git repository in `/Users/username/Documents/cakebook/.git/`
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

我错过了什么?
我也尝试过ssh-keygen不使用 passphase 但仍然是同样的错误。

4

57 回答 57

1026

如果用户之前没有生成 ssh 公钥/私钥对

此信息正在 TheChaw 上运行,但可以应用于支持 SSH 公钥身份验证的所有其他 git 存储库。(例如,参见 [gitolite][1]、gitlab 或 github。)

首先设置您自己的公钥/私钥对集。这可以使用 DSA 或 RSA,因此基本上您设置的任何密钥都可以使用。在大多数系统上,您可以使用 ssh-keygen。

  • 首先,您需要 cd 进入您的 .ssh 目录。打开终端并运行:

cd ~/.ssh && ssh-keygen

  • 接下来,您需要将其复制到剪贴板。
  • 在 OS X 上运行:cat id_rsa.pub | pbcopy
  • 在 Linux 上运行:cat id_rsa.pub | xclip
  • 在 Windows 上(通过 Cygwin/Git Bash)运行:cat id_rsa.pub | clip
  • 在 Windows(Powershell)上运行:(Get-Content id_rsa.pub | Set-Clipboard感谢 @orion elenzil)
  • 通过网站将您的密钥添加到您的帐户。
  • 最后设置你的 .gitconfig。
  • git config --global user.name "bob"
  • git config --global user.email bob@... (不要忘记重新启动命令行以确保重新加载配置)

就是这样,您应该很好地克隆和结帐。

更多信息可以在https://help.github.com/articles/generating-ssh-keys找到(感谢@Lee Whitney)[1]:https ://github.com/sitaramc/gitolite

-

如果用户之前已经生成了一个 ssh 公钥/私钥对

  • 检查您的 github 或 gitlab 帐户设置上已授权哪个密钥
  • 确定必须从本地计算机关联哪个对应的私钥

eval $(ssh-agent -s)

  • 定义键的位置

ssh-add ~/.ssh/id_rsa

于 2010-04-15T07:59:05.930 回答
268

更广泛的故障排除甚至自动修复可以通过以下方式完成:

ssh -vT git@github.com

或者,根据以下评论,我们可以发出:

ssh -vT git@gitlab.com

或者用您的组织正在运行的任何 Git 实例替换 gitlab/github。

来源:https ://help.github.com/articles/error-permission-denied-publickey/

于 2011-12-22T22:30:33.880 回答
203

当您访问 SSH URL(读/写)而不是 Git 只读 URL 但您没有对该存储库的写访问权时,可能会发生此错误。

有时您只想克隆自己的存储库,例如部署到服务器。在这种情况下,您实际上只需要只读访问权限。但由于这是您自己的存储库,如果您愿意,GitHub 可能会显示 SSH URL。在这种情况下,如果您的远程主机的公钥不在您的 GitHub SSH Keys 中,您的访问将被拒绝,这种情况预计会发生

一个等效的情况是,当您尝试使用 SSH URL 克隆您没有写入权限的其他人的存储库时。

总之,如果您的意图是仅克隆一个 repo,请使用 HTTPS URL ( https://github.com/{user_name}/{project_name}.git) 而不是 SSH URL ( git@github.com:{user_name}/{project_name}.git),这样可以避免(不必要的)公钥验证。


更新:GitHub 现在将 HTTPS 显示为默认协议,这一举措可能会减少 SSH URL 的可能滥用。

于 2013-05-09T15:14:22.237 回答
143

github帮助链接帮助我解决了这个问题。看起来 ssh 密钥未添加到 ssh-agent。这就是我最终做的。

命令 1:

确保已启用 ssh-agent。该命令在后台启动 ssh-agent:

eval "$(ssh-agent -s)"

命令 2:

将 SSH 密钥添加到 ssh-agent:

ssh-add ~/.ssh/id_rsa
于 2015-11-29T15:09:04.590 回答
68

得到相同的错误报告。

修复了使用HTTPS而不是SSH协议的问题。因为我不想为测试 PC 设置“SSH 密钥”。

克隆时将 URL 更改为 HTTPS:

git clone https://github.com/USERNAME/REPOSITORY.git

我的问题有点不同:在将现有本地存储库添加到远程时,我将 URL 设置为SSH ,方法是:

git remote add origin ssh://github.com/USERNAME/REPOSITORY.git

要修复它,请将 URL 重置为HTTPS

git remote set-url origin https://github.com/USERNAME/REPOSITORY.git

顺便说一句,您可以使用以下命令检查您的 URL:

git remote -v
origin  https://github.com/USERNAME/REPOSITORY.git (fetch)
origin  https://github.com/USERNAME/REPOSITORY.git (push)

希望这会帮助像我这样的人。:D

于 2018-01-03T23:58:08.030 回答
48

我正在努力解决我所做的同样的问题,并且我能够克隆回购。我对Mac遵循了这些程序。

第一步:检查我们是否已经拥有公共 SSH 密钥。

  1. 打开终端。
  2. 输入ls -al ~/.ssh以查看是否存在现有的 SSH 密钥:

检查目录列表以查看您是否已经拥有公共 SSH 密钥。默认公共是以下 d_dsa.pub、id_ecdsa.pub、id_ed25519.pub、id_rsa.pub 之一

如果找不到,请转到第 2 步,否则请按照第 3 步

第 2 步:生成公共 SSH 密钥

  1. 打开终端。
  2. 使用您用于 github 的有效电子邮件地址输入 followong 命令ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  3. 您将在终端中看到以下内容Generating public/private rsa key pair。当它提示"Enter a file in which to save the key,"按 Enter 键时。这接受默认文件位置。当它提示Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]只需再次按回车。在提示符处,键入安全密码。
  4. Enter passphrase (empty for no passphrase): [Type a passphrase]如果您不想Enter same passphrase again: [Type passphrase again]再次按 Enter ,请按 Enter

这将产生id_rsa.pub

第 3 步:将 SSH 密钥添加到 ssh-agent

  1. 终端类型eval "$(ssh-agent -s)"
  2. 将您的 SSH 密钥添加到 ssh-agent。如果您使用现有的 SSH 密钥而不是生成新的 SSH 密钥,则需要将命令中的 id_rsa 替换为现有私钥文件的名称。输入这个命令$ ssh-add -K ~/.ssh/id_rsa

现在复制 SSH 密钥并将其添加到您的 github 帐户

  1. 在终端中输入这个命令和你的 ssh 文件名pbcopy < ~/.ssh/id_rsa.pub这会将文件复制到你的剪贴板现在打开你的 github 帐户转到设置> SSH 和 GPG 密钥> 新 SSH 密钥输入标题并从剪贴板粘贴密钥并保存。瞧,你完成了。
于 2017-03-07T06:28:19.327 回答
40

Windows 上的另一种可能性,这些答案中的任何一个都没有涵盖,并且 git 或 github 文档中没有涵盖故障排除:

git 使用的 openssh 可执行文件可能与您想象的不同。

我在尝试从 github 和 ssh.dev.azure.com 克隆或拉取时收到Permission denied (public key)错误消息,我已按照所有说明操作并验证了我的 SSH 密钥是否已正确设置(从 SSH 的角度来看)使用ssh -vT git@github.comand ssh -vT git@ssh.dev.azure.com。并且仍然收到这些错误:

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.

我最终发现问题在于 Git for Windows 和 Windows 都有自己的 openssh 版本。这记录在这里:https ://github.com/desktop/desktop/issues/5641

我依靠 Windows ssh-agent 服务来存储我的 ssh 密钥密码,所以 git(带有单独版本的 openssh)无法读取我的私钥。我认为使用此错误消息是一个错误 - 它具有误导性。

解决方法是:

git config --global core.sshCommand "'C:\Windows\System32\OpenSSH\ssh.exe'"

或者在你的 ~/.gitconfig 中:

[core]
    sshCommand = 'C:\\Windows\\System32\\OpenSSH\\ssh.exe'

也许这很快会在 git for Windows 中得到修复,但这是我第二次在这个问题上浪费时间。

于 2020-04-11T20:43:00.700 回答
36

这对我有用:

ssh-add ~/.ssh/id_rsa
于 2017-01-07T12:17:57.400 回答
25

请注意(至少对于某些项目),您必须拥有一个带有 ssh 密钥的 github 帐户

查看您的身份验证代理 ( ssh-add -l )中列出的密钥
(如果您没有看到任何密钥,请使用 ssh-add /path/to/your/key 添加现有密钥之一(例如:ssh-add ~ /.ssh/id_rsa ))
(如果您没有任何密钥,请先创建一个。参见:http ://rcsg-gsir.imsb-dsgi.nrc-cnrc.gc.ca/documents/internet/node31.html或者只是谷歌 ssh-keygen)

要验证您是否拥有与您的 github 帐户关联的密钥

转到:https ://github.com/settings/ssh

您应该看到至少一个键的哈希键与您在一分钟前键入ssh-add -l时看到的哈希键相匹配。

如果没有,请添加一个,然后重试。

于 2013-01-17T20:13:19.217 回答
25

视觉指南(Windows)

1 of 2. Git 批处理端

1.1。打开git batch(下载在此处输入图像描述

1.2. 粘贴下面的文本(更改为您的 GitHub 帐户电子邮件)

$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

在此处输入图像描述

1.3. Enter(接受默认文件位置) 在此处输入图像描述

1.4. 单击Enter两次(或设置 SSH 密钥密码 - Gitbub passphrases docs

> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]

1.5。密钥生成:

您的身份已保存在 /c/Users/user/.ssh/id_rsa...

1.6. CopySSH 密钥到剪贴板。

$ clip < ~/.ssh/id_rsa.pub

2 of 2. Github 网站用户端

在下面user setting 在此处输入图像描述

SSH and GPG keys=>新的 SSH 密钥在此处输入图像描述

Paste步骤中的代码1.6 在此处输入图像描述

完毕 :)

在此处输入图像描述


如果有人不想使用 SSH use HTTPS

在此处输入图像描述

Github 文档: https ://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh

于 2020-07-21T21:43:08.133 回答
16

我遇到了同样的问题,因为我认为SSHHTTPS之间的区别是

https://github.com/USERNAME/REPOSITORY.git

ssh://github.com/USERNAME/REPOSITORY.git

所以我从HTTPS更改为SSH只是通过更改url 末尾的任何内容都没有更改https://ssh://

但事实是:

https://github.com/USERNAME/REPOSITORY.git

git@github.com:USERNAME/REPOSITORY.git

这意味着我改变ssh://github.com/USERNAME/REPOSITORY.git它的git@github.com:USERNAME/REPOSITORY.git工作原理。

愚蠢的错误,但希望对某人有所帮助!

于 2016-07-28T03:53:10.813 回答
15

如果您的问题最近(2021 年下半年)突然出现,则可能是由不兼容的哈希算法引起的。

截至本文(2021 年 10 月),适用于 windows 的 Git 的最新版本是 2.33.1(发行说明),它采用了最新的 OpenSSH 8.8p1(发行说明),而后者又弃用了 SHA-1。同时,如果您的远程 Git 存储库仍然坚持使用 SHA-1,您将无法通过身份验证。

要查看您是否可能陷入这种情况,请通过以下方式检查您的软件版本:

ssh -V
git --version

然后您应该检查OpenSSH 8.8/8.8p 发行说明的“可能不兼容的更改”部分。

TL;博士

解决方案 1:通过将其添加到~/.ssh/config文件中再次启用 SHA-1:

Host <remote>
    HostkeyAlgorithms +ssh-rsa
    PubkeyAcceptedAlgorithms +ssh-rsa

请记住替换<remote>为远程存储库的主机名。

解决方案 2:使用 ECDSA 或 Ed25519 而不是 RSA 重新生成您的密钥对。例如:

ssh-keygen -t ecdsa -C <comment>

请记住<comment>用您自己的助记词替换。然后,将生成的公钥上传到您的远程存储库。


仅供参考,我在访问 Gitee.com 时遇到此提示消息,该网站在他们的服务器上使用并在此处golang.org/x/crypto/ssh发布了有关此问题的页面(中文)。

git@gitee.com: Permission denied (publickey).
于 2021-10-25T06:37:21.533 回答
13

我的情况略有不同,我登录到远程服务器并在服务器上使用 git,当我运行任何 git 命令时,我得到了相同的消息

   Permission denied (publickey).
   fatal: The remote end hung up unexpectedly

我修复它的方法是在我的 Mac 上更改文件 /etc/ssh_config。从

ForwardAgent no 

ForwardAgent yes
于 2013-12-17T00:43:12.680 回答
11

这些是我在 Windows 10 中遵循的步骤

  1. 打开 Git Bash。

  2. 生成公钥:

    ssh-keygen -t rsa -b 4096 -C "youremailaddress@xyz.com"
    
  3. 将生成的密钥复制到剪贴板(类似于 CTRL+C)

    clip < ~/.ssh/id_rsa.pub
    
  4. 浏览器,去 Github => Profile=> Settings => SSH and GPG keys => Add Key

  5. 提供键名并粘贴剪贴板 (CTRL+V)。

  6. 最后,测试您的连接(Git bash)

    ssh -T git@github.com
    

在此处输入图像描述

谢谢!

于 2020-03-21T15:12:36.643 回答
8

我不得不将我的 ssh 密钥复制到根文件夹。运行 Ubuntu 18.04 的谷歌云计算引擎

sudo cp ~/.ssh/* /root/.ssh/
于 2019-12-02T18:56:05.590 回答
7

最简单的方法之一

去终端-

  git push <Git Remote path> --all
于 2013-11-06T06:04:39.780 回答
7

伙计们,这对我来说是这样的:

  1. 打开终端并转到用户[见附图]
  2. 打开 .ssh 文件夹并确保它没有像 id_rsa 或 id_rsa.pub 这样的文件,否则有时它不会正确重写文件
  3. git --version [检查 git 安装和版本]
  4. git config --global user.email "你的邮箱地址"
  5. git config --global user.name "你的名字"
  6. git config --list [确保您已设置您的姓名和电子邮件]
  7. cd ~/.ssh
  8. ssh-keygen,提示保存文件,允许
  9. cat ~/.ssh/id_rsa.pub [访问您的公钥并将密钥复制到 gerrit 设置]

注意:您不应该在 Git 中使用 sudo 命令。如果您有充分的理由必须使用 sudo,那么请确保您在每个命令中都使用它(此时使用 su 以 root 身份获取 shell 可能会更好)。如果您在没有 sudo 的情况下生成 SSH 密钥,然后尝试使用类似 sudo git push 的命令,您将不会使用生成的相同密钥

在此处输入图像描述

在此处输入图像描述

于 2016-05-18T03:40:39.887 回答
7

如果没有解决,请试试这个

  1. 生成个人访问令牌 ( Setting -> Developer settings -> Personal access tokens -> Generate new token)
  2. git remote set-url origin https://<TOEKN>@github.com/USERNAME/REPOSITORY.git

注意:如果出现密码弹出窗口,请尝试仅输入令牌(尝试两次)

于 2021-12-20T05:06:15.767 回答
6

您在公司环境中吗?您的系统变量最近是否可能发生了变化?根据这个SO answer,ssh 密钥位于%HOMEDRIVE%%HOMEPATH%\.ssh\id_rsa.pub. 因此,如果%HOMEDRIVE%最近发生了更改,git 不知道在哪里查找您的密钥,因此也不知道所有身份验证内容。

尝试运行ssh -vT git@github.com。记下它的identity file位置。对我来说,这不是指向我的正常情况\Users\MyLogin,而是指向网络驱动器,因为在网络级别推动了对环境变量的更改。

解决方案?由于我的新%HOMEDRIVE%文件与我的本地文件具有相同的权限,因此我只是将我的 .ssh 文件夹移到了那里,并称之为一天。

于 2014-05-30T17:37:54.587 回答
6

在 Windows 上,确保您的所有应用都同意 HOME。Msys 出人意料地不会为你做这件事。我不得不设置一个环境变量,因为 ssh 和 git 似乎无法就我的 .ssh 目录的位置达成一致。

于 2012-11-07T20:58:26.377 回答
6

使用ghie Github官方CLI的解决方案

gh安装

brew install gh

gh 通过 cli 登录或身份验证

gh auth login

回购克隆

gh repo clone <username or orgname>/<repo-name>

例子:gh repo clone keshavdulal/sample-repo

咆哮:当我git clone突然决定不再工作时,我也很沮丧,我没有耐心或脑力从头开始重新学习 ssh/公钥/密码学,只是为了克隆一个我已经可以访问的怪异回购。gh也很惊讶没有人在答案中提到

于 2021-10-05T07:16:28.997 回答
5

基本的 GIT 指令没有提到 SSH 密钥的东西。在上面的一些链接之后,我找到了一个 git 帮助页面,它逐步解释了如何为各种操作系统执行此操作(该链接将检测您的操作系统并相应地重定向):

http://help.github.com/set-up-git-redirect/

它介绍了 GITHub 所需的所有内容,并提供了详细的解释,例如“为什么在创建 RSA 密钥时添加密码短语”。我想我会发布它,以防它帮助别人......

于 2012-05-02T19:36:29.117 回答
5

我遇到了这个错误,因为我需要给我当前的工作目录权限 700:

chmod -R 700 /home/ec2-user/
于 2018-06-29T17:33:22.487 回答
4

我帮助了以下内容:

  1. 打开终端(Git Bash
  2. 删除目录中的所有文件.ssh或重命名并创建新.ssh文件夹。
  3. 按照说明的步骤进行操作:
    1. 生成新的 SSH 密钥
    2. 将 SSH 密钥添加到 ssh-agent

系统:Windows 10。

于 2021-08-21T07:34:26.363 回答
3

除了 Rufinus 的回复之外,在Windows中将 ssh 密钥复制到剪贴板的快捷方式是:

  • type id_rsa.pub | clip

参考:

于 2014-09-04T05:55:36.003 回答
3

它非常简单。键入以下命令

ssh-keygen -t rsa -b 4096 -C "youremailid@yourdomain.com"

生成 SSH 密钥。打开文件并复制内容。进入 GitHub 设置页面,点击 SSH 密钥。单击添加新的 SSH 密钥,然后将内容粘贴到此处。就是这样:) 你不应该再看到这个问题了。

于 2016-08-23T05:42:34.627 回答
3

如果您有多个钥匙,您可能需要做 ssh-add private-keyfile

于 2016-07-03T00:08:32.463 回答
3

当您尝试使用不同的用户名推送到存储库时,最简单的解决方案是:

 git remote set-url origin https://USERNAME@github.com/USERNAME/PROJECTNAME.git
于 2016-11-20T21:28:05.193 回答
2

它对我有用。

您的公钥保存在 id_rsa.pub;文件中,并且是您上传到帐户的密钥。您可以通过运行以下命令将此密钥保存到剪贴板:

pbcopy < ~/.ssh/id_rsa.pub

  • 将 SSH 密钥复制到剪贴板,返回 Web 门户。
  • 在 SSH 密钥字段中,粘贴您的 SSH 密钥。
  • 在名称字段中,提供密钥的名称。
  • 节省 。
于 2016-02-14T05:12:28.227 回答
2

对我来说,实际问题是使用文本编辑器将 SSH 公钥复制到剪贴板

如果您关注docs.github.com并在 Notepad++ 等文本编辑器中打开 .pub 文件来复制 SSH 公钥,那么您将遇到麻烦。

在此处输入图像描述

而是使用

猫 ~/.ssh/id_***.pub | 夹子

复制命令

于 2021-09-26T12:04:28.010 回答
2

我删除了 node_modules/package-lock.json 和 yarn.lock 文件。又跑npm i了。这为我解决了这个问题。

于 2021-12-16T11:59:27.070 回答
2

始终检查 GitHub 上的 SSH 密钥生成过程,而不是一些过时的博客

https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent

在那里您可以看到密钥是通过以下方式生成的:

ssh-keygen -t ed25519 -C "your_email@example.com"

所以算法是ed25519而不是 rsa 或其他任何东西。

于 2022-01-11T08:47:44.770 回答
2

我刚刚在设置当前项目时遇到了这个问题,上述解决方案均无效。所以我尝试使用命令 ssh -vT git@github.com 查看调试列表中实际发生的情况。我注意到我的私钥文件名不在列表中。所以将私钥文件名重命名为“id_rsa”就可以了。希望这会有所帮助。

于 2015-12-13T09:21:10.973 回答
2

在 MAC 中,转到终端

1)使用命令导航到主目录 -cd ~

2) cd .ssh && ssh-keygen (对于默认值,单击两个输入的 Enter/Return 键)

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/username/.ssh/id_rsa):      
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/usernmae/.ssh/id_rsa.

3)在那之后,做“ ls”。你会发现 id_rsa.pub 文件。

4)复制id_rsa.pub文件中的内容(使用cat命令读取-- cat id_rsa.pub

5) 导航到 BitBucket 或任何支持 SSH 密钥的版本工具。使用添加密钥选项粘贴内容

而已。现在尝试提交并推送。

在此处输入图像描述

于 2020-03-17T16:49:25.460 回答
2

在我的 MAC 中,我通过以下方式解决了这个问题:

cp ~/.ssh/github_rsa ~/.ssh/id_rsa

出于某种原因,我的 git 停止在文件中查找私钥github_rsa。这发生在特定的回购中。我的意思是,在其他存储库中,git 保持正常工作。

我认为这是一个错误。

我可以发现这种行为正在运行ssh -vT git@github.com

于 2017-07-27T12:59:54.047 回答
2

我今天在尝试使用 git bash 在 Windows 中设置现有存储库时遇到了这个问题。问题是在键入以下内容时:

git clone myreposshurl

在 gitbash 中,ctrl+c 和 ctrl+v 不起作用。在尝试粘贴存储库 url 时,我执行了 ctrl+v,它引入了一些不需要的字符。当我尝试并成功克隆另一个存储库时,终于找到并解决了这个问题。花了 1.5 小时才弄清楚这个愚蠢的错误。

\302\226git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

如果您看到像上面的 \302 这样的字符,那么这可能是一种可能的原因。

于 2021-10-04T09:20:26.693 回答
1

尝试运行 makefile 时,我遇到了类似的Permission denied (publickey) 错误。

作为上述 SSH 步骤的替代方法,您可以安装本机 GitHub for Mac 应用程序。

单击从 - https://help.github.com/articles/set-up-git#platform-mac下载适用于 Mac 的 GitHub

一旦您使用 git hub 帐户完成设置(我还安装了 git hub 命令行工具,但不确定是否需要此步骤),然后我收到一封电子邮件 -

[GitHub] 新的公钥已添加到您的帐户

我的错误得到了修复。

于 2013-06-13T17:01:22.540 回答
1

我遇到了同样的错误。我的问题是混入 sudo。

如果不使用 sudo 作为 git clone 命令的前缀,我将无法自动创建要克隆到的目录。但是,当我这样做时,我的 ssh 密钥没有被正确引用。

为了解决这个问题,我通过 chmod 在要包含我的克隆的父目录上设置权限,以便我可以写入它。然后我运行 git clone 没有 sudo 前缀。然后它起作用了!之后我将权限更改回来。完毕。

于 2015-07-29T19:24:35.137 回答
1

我收到此错误是因为我使用错误的电子邮件生成了 ssh 密钥。我能够使用 ssh 进行连接,但不能使用 git。解决方案是使用我的 github 帐户的主电子邮件地址重新生成密钥。

于 2015-12-15T18:59:56.613 回答
1

gnome-keyring-daemon在我的情况下,这个奇怪的错误是错误命名需要密码的密钥的症状。

我按照此处概述的步骤操作,并通过终端输入密码。错误,又名令人困惑的 GUI 界面,已得到解决。请参阅:https ://askubuntu.com/questions/3045/how-to-disable-gnome-keyring

于 2017-06-26T04:50:35.577 回答
1

Execute the terminal as admin.

If the terminal can't see your .ssh it will return that error.

于 2018-11-28T19:26:02.980 回答
1

就我而言,我已经重新安装了 ubuntu,并且用户名与以前的不同。在这种情况下,生成的 ssh 密钥也与前一个不同。

只需在存储库中复制当前的 ssh 公钥即可解决该问题。密钥将在您的用户的/home/.ssh/id_rsa.pub

于 2017-07-06T07:19:08.930 回答
1

对我来说,问题是使用sudo

sudo git clone git@github.com:userName/repo.git导致上述错误。

所以为了解决这个问题,我将我试图克隆到的文件夹

sudo chown -R $USER:$USER /var/www/iqge.org/html

然后使用这个 git clone git@github.com:userName/repo.git成功完成

于 2021-02-13T07:06:13.707 回答
1

它对我有用

ssh -i [your id_rsa path] -T github@github.com
于 2016-04-06T07:26:21.197 回答
1

完成ssh-keygen部分后,您可以通过以下方式检查验证:

  1. $ ssh -T git@github.com用于测试您的 SSH 连接;

  2. 确认哪个用户运行了“ssh-keygen”命令。您生成的公钥由该用户跟随。原因如下:

sudo 命令是否应该与 Git 一起使用?

您不应该在 Git 中使用 sudo 命令。如果您有充分的理由必须使用 sudo,那么请确保您在每个命令中都使用它(此时使用 su 以 root 身份获取 shell 可能会更好)。如果您在没有 sudo 的情况下生成 SSH 密钥,然后尝试使用 sudo git push 之类的命令,您将不会使用生成的相同密钥。

  1. 确认您对存储库将克隆到的目录具有写入权限。如果没有,那就去做吧。并且您必须su在更新用户组权限后通过注销等方式刷新当前用户。
于 2021-08-17T16:53:37.127 回答
0

使用来自 Github 的 ssh 链接,但确保不要将其附加到 ssh 中,只需使用 git hub 上的 ssh 选项卡为您提供的内容来克隆您的 repo。

于 2012-09-05T17:53:30.060 回答
0
$ cd ~
$ cd .ssh
$ chmod 400 id_rsa
于 2017-10-07T06:04:07.000 回答
0

您可以从在终端中执行以下操作开始:

  1. cd ~/.ssh

  2. 通过运行生成 ssh 密钥: ssh-keygen -o -t rsa -C "your@email.com"

  3. 当提示输入保存密钥的位置时,输入:cat id_rsa.pub | pbcopy

  4. 输入并确认您的密码,然后生成您的新密钥。

  5. 运行以下命令将密钥通知 github:cat ~/.ssh/id_rsa.pub

  6. 复制输出,然后前往 github 创建一个新的 SSH 密钥。将复制的内容粘贴到文本区域,给它一个合适的标题,然后点击添加键按钮。

现在您可以无忧无虑地进行操作了。

于 2022-02-08T13:16:52.043 回答
0

我也分享一下我的经验

我试图从 Gerrit 存储库中克隆一些项目,在那里我在帐户设置中获取了我的公钥。

在第一次尝试时,git clone我收到以下错误:

Unable to negotiate with XX.XX.XX.XX port XXX: no matching key exchange
method found. Their offer: diffie-hellman-group1-sha1

我发现我需要以-oKexAlgorithms=+diffie-hellman-group1-sha1某种方式将 SSH 选项传递给git clone.

希望GIT_SSH_COMMAND环境变量完成了这项工作:

export GIT_SSH_COMMAND="ssh -oKexAlgorithms=+diffie-hellman-group1-sha1"

git clone仍然没有开始工作..现在它抛出了(关于主题):

Permission denied (publickey).

我已经有了 SSH 密钥,不想重新生成它们。我检查了与主机的普通 SSH 连接,一切正常:

****    Welcome to Gerrit Code Review    ****

  Hi XXXXX, you have successfully connected over SSH.

  Unfortunately, interactive shells are disabled.
  To clone a hosted Git repository, use:

  git clone ssh://xxxxx@xx.xx.xx:xxx/REPOSITORY_NAME.git

我有点困惑。-vvv我重新开始并通过选项打开了 SSH 的调试。我看到了以下内容:

debug1: read_passphrase: can't open /dev/tty: No such device or address

可能,这是GIT_SSH_COMMANDenv 变量的开销——我的密钥是用密码保护的(我在检查 git repo 主机的登录时输入了它)。

所以,我决定去掉那个短语。一个简单的命令帮助了我:

ssh-keygen -p

然后我为“旧密码”输入了我的密码,然后在“新密码”上点击了ENTER两次以将其留空,即根本没有密码并确认我的选择。

之后,我在本地磁盘上获得了新克隆的 repo。

于 2017-12-19T15:51:37.150 回答
0

通过在我的 ubuntu 系统中执行以下步骤,我能够解决这个问题。因为我正在尝试对系统使用无密码 ssh。

须藤 vi /etc/ssh/sshd_config

1) 在下面评论:#更改为 no 以禁用隧道明文密码 #PasswordAuthentication yes PasswordAuthentication no ----> 对此进行了评论。

2)然后重新启动 sshd 守护程序,如下所示。

服务 sshd 重启

于 2017-04-03T09:31:24.597 回答
0

适用于 Windows 的SourceTree案例

如果您在 Windows 上使用SourceTree,您需要使用PuTTyGen创建一个新的密钥对

在此处输入图像描述

ssh-rsa您应该插入的顶部的密钥

Github => Profile=> Settings => SSH and GPG keys => Add Key

然后保存私钥并将其添加到Pageant(它与 SourceTree 一起运行)

在此处输入图像描述

就这样

于 2021-08-11T16:49:03.670 回答
0

首先,我建议检查一些标准的东西,比如:

  • 以系统中正确的用户身份登录
  • 在系统的正确位置拥有正确的私钥
  • 尝试使用正确的用户名主机名端口进行连接,
  • 在外部服务器的正确位置(并为正确的用户)拥有公钥,
  • 在您的计算机上重新启动 ssh 服务:
服务 ssh 重启

(或以另一种方式,取决于您如何管理系统中的服务......)

这对我来说已经足够了。

于 2019-03-23T16:18:14.907 回答
0

公共/私人配置可能不正确。请按照步骤操作。在窗口的任意位置执行命令

ssh-keygen -o -f ~/.ssh/id_rsa

现在转到 c://users/xyz/.ssh/ 并打开 id_rsa 密钥(路径可能会有所不同)现在转到 gitlab 和 userprofile> setting>ssh 密钥并在此处添加您的密钥。现在尝试克隆

于 2020-08-13T07:51:00.457 回答
0

我也有完全相同的错误。

问题是当将公钥复制到 BitBucket(在我的例子中)时,最后一个不可见的换行符被复制/粘贴。

所以复制公钥的时候,先复制到记事本,去掉最后的空行,复制,粘贴。

于 2020-01-15T15:51:36.370 回答
0

Mac 的步骤:

  1. 切换用户 ( sudo su - jenkins)
  2. 生成密钥( ssh-keygen -t rsa -b 4096 -C "username")。用户名是您与詹金斯一起使用的用户名。
  3. 复制生成的公钥 (cat ~/.ssh/id_rsa.pub)。
  4. 将密钥粘贴到 git 帐户。(设置 -> SSH 和 CPG 密钥 -> 新 ssh 密钥 -> 输入密钥名称(可以是任何名称)并将密钥粘贴到描述中)。
于 2017-05-28T20:28:06.947 回答
0
  • 在 PC 的任何位置创建一个新文件夹(例如在桌面上)

  • 移动到那个新文件夹并在那里打开 git bash。

& 在 bash 中编写以下代码:

$ git init
$ git remote add origin https://github.com/YOUR_GITHUB_HANDLER/YOUR_REPO_NAME.git
$ git pull origin master

(无论文件是否被拉出,请查看该新文件夹)

如果文件被拉出,则首先从该旧文件夹(发生描述的错误)中删除所有文件/文件夹,包括 .git文件夹

& 复制新文件夹中的所有文件,包括 .git 并将其粘贴到发生所述错误的旧文件夹中。

这将获取您的远程仓库。

如果您想获取远程仓库而不删除您在本地所做的新更改,那么只需复制并粘贴我们的新 .g​​it 文件夹

现在你可以做$ git push origin master

于 2021-04-20T13:52:09.240 回答
0

每当我在工作中获得一台新计算机或换工作时,这些都是我遵循设置 github 访问的步骤。Mac 或 Windows

- 转到 https://github.[yourWorkDomain].com。导航到设置 → 开发人员设置 → 个人访问令牌-
生成新令牌
- 设置令牌描述并仅选中“repo”框的范围(这将为您提供 repo:status、repo_deployment、public_repo、repo:invite 访问权限)

- 获得令牌后,复制它(不要离开,确认接下来的两个步骤有效) -
尝试再次克隆 repo(使用“https”)
- 用户名使用你的用户名
- 密码,粘贴您复制的令牌
- 所有未来的请求现在都应该可以正常工作,而无需询问您的用户名和密码。

于 2021-02-24T16:03:56.287 回答