我用的是Mac雪豹,刚刚安装了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没有密码,但仍然错误。


当前回答

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

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

service ssh restart

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

这对我来说已经足够了。

其他回答

在你的电脑的任何地方新建一个文件夹(比如在桌面上) 移动到新文件夹,打开git bash。

&在bash中编写以下代码:

$ git init $ git远程添加原点https://github.com/YOUR_GITHUB_HANDLER/YOUR_REPO_NAME.git $ git拉源主

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

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

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

这将为您获取远程回购。

如果你想获取远程回购而不删除你在本地所做的新更改,那么只需要复制并粘贴我们的新.git文件夹

现在你可以使用$ git push origin master了

SourceTree for Windows case

如果你在Windows上使用SourceTree,你需要使用PuTTyGen创建一个新的keypair

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

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

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

这是所有

在Windows上,确保所有应用程序的HOME一致。令人惊讶的是,Msys不会为你做这件事。我不得不设置一个环境变量,因为ssh和git似乎无法就我的.ssh目录在哪里达成一致。

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

截至本文(2021年10月),Git for windows的最新版本是2.33.1(发布说明),它已经采用了最新的OpenSSH 8.8p1(发布说明),而OpenSSH 8.8p1反过来已经弃用了SHA-1。同时,如果远程Git存储库仍然坚持SHA-1,则身份验证将失败。

要看看你是否会陷入这种情况,检查你的软件版本:

ssh -V
git --version

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

博士TL;

解决方案1:通过将此添加到~/中,再次启用SHA-1。ssh /配置文件:

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

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

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

ssh-keygen -t ecdsa -C <comment>

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


供你参考,我在访问Gitee.com时遇到了这个提示信息,Gitee.com在他们的服务器上使用golang.org/x/crypto/ssh,并在这里发布了一个关于这个问题的页面(中文)。

git@gitee.com: Permission denied (publickey).

在我的情况下,我重新安装了ubuntu,用户名从以前的改变。在这种情况下,生成的ssh密钥也与之前的密钥不同。

这个问题通过在存储库中复制当前的ssh公钥来解决。密钥将在用户的/home/.ssh/id_rsa.pub中可用