我用的是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没有密码,但仍然错误。


当前回答

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

打开Git Bash。 生成公钥: ssh-keygen -t rsa -b 4096 -C "youremailaddress@xyz.com" 复制生成的键到剪贴板(像CTRL+C一样工作) 剪辑< ~/.ssh/id_rsa.pub 浏览器,进入Github => Profile=> Settings => SSH和GPG Key => Add Key 提供键名和粘贴剪贴板(CTRL+V)。 最后,测试您的连接(Git bash) ssh -T git@github.com

谢谢!

其他回答

这对我很管用。

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

笔记本电脑

复制SSH密钥到剪贴板,返回web门户。 在SSH Key字段中,粘贴您的SSH密钥。 在Name字段中,为键提供一个名称。 保存。

我已经使用gh进行了身份验证,创建了新的密钥,等等。问题是我在Ubuntu中安装了带snap的gh,所以生成的新密钥在。/snap/gh/502/。Ssh /,而不是常规的. Ssh路径。

我解决了它复制一切到。ssh文件夹:

cp -a ./snap/gh/502/.ssh/* .ssh/

如果没有,用find找到你的钥匙。- name * .pub

我想,在数字世界里,知道你把钥匙放在哪里仍然是个问题。

我也犯了同样的错误。

问题是,当将公钥复制到BitBucket(在我的情况下)时,在末尾复制/粘贴了一个不可见的换行符。

因此,在复制公钥时,首先将其复制到记事本,删除末尾的空行,复制并粘贴。

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

如果你的问题最近突然出现(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).