git clone ssh权限被拒绝

gab*_*how 12 git ssh

我按照https://help.github.com/articles/generating-ssh-keys上的说明进行操作 并输入

ssh -T git@github.com
Run Code Online (Sandbox Code Playgroud)

我收到了消息

Hi username! You've successfully authenticated, but GitHub does not
# provide shell access.
Run Code Online (Sandbox Code Playgroud)

当我尝试使用ssh克隆存储库时

git clone ssh://github.com/username/repository.git
Run Code Online (Sandbox Code Playgroud)

我明白了

Permission denied (publickey).
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)

如果我输入

ssh-add -l
Run Code Online (Sandbox Code Playgroud)

我看到3个键附有我的电子邮件地址(k1)和其他2个内部~/.ssh/id_rsa (RSA)(k2和k3).键k3与k1相同

如果我打字

ssh -vT git@github.com
Run Code Online (Sandbox Code Playgroud)

一切都很好......唯一让我思考的是

debug1: Remote protocol version 2.0, remote software version libssh-0.6.0
debug1: no match: libssh-0.6.0
Run Code Online (Sandbox Code Playgroud)

rau*_*ora 18

这个非常不明显的错误意味着服务器拒绝了您的连接.Github有一个非常丰富的文档 -

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

更新 -

检查是否按照GitHub提供的说明正确设置了密钥和令牌.如果我是你,再从头开始.可能是你没有用Github正确初始化SSH密钥 -

cd ~/.ssh && ssh-keygen cat id_rsa.pub

并将密钥复制到Github网站的SSH设置中.

要通过SSH克隆Git存储库,请像这样指定ssh:// URL:

$ git clone ssh://user@server/project.git

或者您可以使用较短的类似scp的SSH协议语法:

$ git clone user@server:project.git

只是想确保从Github帐户复制正确的SSH克隆URL -

在此输入图像描述


man*_*lds 18

git clone ssh://github.com/username/repository.git是错的.你应该这样做:

git clone ssh://git@github.com/username/repository.git
Run Code Online (Sandbox Code Playgroud)

或者更好的是:

git clone git@github.com:username/repository.git
Run Code Online (Sandbox Code Playgroud)


Nik*_*ani 8

--------- WINDOWS 用户的解决方案 ------------------

在windows下也遇到同样的问题,解决方法如下:

成功设置 git 的私钥/公钥后,您需要导航到:

C:\Program Files\Git\etc\ssh

-- 打开其下的 ssh-config 文件并添加以下信息:

Host github.com
User git
IdentityFile << absolute path to your private key for git >>
Run Code Online (Sandbox Code Playgroud)

-- 重新启动 power shell 并尝试再次克隆存储库

 git clone  <<url copied from git repo>>
Run Code Online (Sandbox Code Playgroud)


NOY*_*OYB 5

如果它是一个公共存储库,则可以通过使用带有 fetch url 的 git 协议来避免整个密钥的事情。

git clone git://github.com/username/repository.git
Run Code Online (Sandbox Code Playgroud)