我用的是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没有密码,但仍然错误。
在MAC中,进入终端
1)使用命令- cd ~进入主目录
2) cd .ssh && ssh-keygen(默认情况下,双击输入/返回键)
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。酒吧文件。
4)复制id_rsa. conf文件中的内容。Pub文件(使用cat命令读取- cat id_rsa.pub)
5)导航到BitBucket或任何支持SSH密钥的版本工具。使用“添加键选项”粘贴内容
就是这样。试着现在就做出承诺和努力。
Windows上的另一种可能性,在这些答案中都没有涉及,git或github文档中也没有涉及故障排除:
Git使用的openssh可执行文件可能与您认为的不同。
当我试图从github和ssh.dev.azure.com克隆或拉时,我收到了权限拒绝(公钥)错误,我遵循了所有的说明,并验证我的SSH密钥被正确设置(从SSH的立场)使用SSH -vT git@github.com和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很快就会修复这个问题,但这已经是我第二次在这个问题上浪费时间了。
当我在工作中得到一台新电脑或换工作时,这些是我遵循的步骤。Mac或Windows
-访问https://github.[yourWorkDomain].com。导航到设置→开发人员设置→个人访问令牌
-生成一个新的令牌
-设置令牌描述,只检查范围的“repo”框(这将给你repo:status, repo_deployment, public_repo, repo:invite access)
-在你得到令牌后,复制它(不要导航离开,确认接下来的两步工作)
-尝试再次克隆回购(使用“https”)
-用户名使用你的用户名
-对于密码,粘贴您复制的令牌
-所有未来的请求现在应该工作,而不需要您的用户名和密码。
如果你的问题最近突然出现(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).