使用Git时如何解决权限被拒绝(公钥)错误?

使用Git时如何解决权限被拒绝(公钥)错误?,git,ssh,ssh-keys,public-key,Git,Ssh,Ssh Keys,Public Key,我在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 我错过了什么? 我也尝

我在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
ssh-keygen,但没有passphase,但仍然存在相同的错误。

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

此信息正在chaw上运行,但可以应用于所有其他支持SSH pubkey身份验证的git存储库。(例如,请参见gitlab或github。)

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

  • 首先,您需要将cd刻录到.ssh目录中。打开终端并运行:
    cd~/.ssh&&ssh-keygen

  • 接下来,您需要将其复制到剪贴板。
    • 在OSX上运行:
      cat id_rsa.pub | pbcopy
    • 在Linux上运行:
      cat id_rsa.pub|xclip
    • 在Windows上(通过Cygwin/Git Bash)运行:
      cat id_rsa.pub | clip
  • 通过网站将您的密钥添加到您的帐户
  • 最后设置您的.gitconfig。
    • git config--global user.name“bob”
    • git config--global user.emailbob@...
(别忘了重新启动命令行以确保重新加载配置) 这就是你应该很好的克隆和结帐

更多信息请访问(感谢@Lee Whitney) -

如果用户之前已生成ssh公钥/私钥对集

  • 检查您的github或gitlab帐户设置中已授权的密钥
  • 确定必须与本地计算机关联的相应私钥
eval$(ssh代理-s)

  • 定义键的位置

ssh add ~/.ssh/id\u rsa
更广泛的故障排除甚至自动修复可以通过以下方法完成:

ssh -vT git@github.com
或者,根据以下意见,我们可以发布:

ssh -vT git@gitlab.com
或者用组织运行的任何Git实例替换gitlab/github


来源:

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


它介绍了GITHub所需的一切,并给出了详细的解释,如“为什么在创建RSA密钥时添加密码短语”。我想我会发布它,以防它对其他人有所帮助…

在Windows上,确保所有应用程序都同意HOME。令人惊讶的是,Msys不会为您这样做。我必须设置一个环境变量,因为ssh和git似乎无法就.ssh目录的位置达成一致。

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

查看身份验证代理(ssh add-l)中列出的密钥
(如果没有看到任何密钥,请使用ssh add/path/to/your/key(例如:ssh add~/.ssh/id_rsa))添加一个现有密钥
(如果您没有任何密钥,请先创建一个。请参阅:或只使用google ssh keygen)

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

转到:

您应该至少看到一个密钥,其散列密钥与您刚才键入ssh add-l时看到的散列之一相匹配


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

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

有时您只想克隆自己的repo,例如部署到服务器。在这种情况下,您实际上只需要只读访问。但由于这是您自己的回购协议,GitHub可能会显示SSH URL(如果您喜欢的话)。在这种情况下,如果您的远程主机的公钥不在GitHub SSH密钥中,您的访问将被拒绝,,这是预期的情况

同样的情况是,当您尝试克隆其他人的repo时,您没有SSH URL的写入权限

总之,如果您的目的是只克隆回购协议,请使用HTTPS URL
https://github.com/{user_name}/{project_name}.git
),而不是SSH URL(
git@github.com:{user\u name}/{project\u name}.git
),这避免了(不必要的)公钥验证



更新:GitHub现在将HTTPS显示为默认协议,此操作可能会减少SSH URL的可能误用。

我在尝试运行makefile时遇到类似的权限拒绝(publickey)错误

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

单击下载适用于Mac的GitHub
,从-

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

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


我的错误被修复了。

最简单的方法之一

到终点站-

  git push <Git Remote path> --all
git推送--all

我的情况稍有不同,我登录到一个远程服务器,并在服务器上使用git,当我运行任何git命令时,我都会收到相同的消息

   Permission denied (publickey).
   fatal: The remote end hung up unexpectedly
我修复它的方法是在Mac上更改文件/etc/ssh\u config。 从

你是不是有麻烦了?您的系统变量最近是否发生了变化?根据SO的回答,ssh密钥位于
%HOMEDRIVE%%HOMEPATH%\.ssh\id\u rsa.pub
。因此,如果最近更改了
%HOMEDRIVE%
,git不知道在哪里查找您的密钥,因此所有
ForwardAgent no 
ForwardAgent yes
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
https://github.com/USERNAME/REPOSITORY.git

git@github.com:USERNAME/REPOSITORY.git
ssh-keygen -t rsa -b 4096 -C "youremailid@yourdomain.com"
 git remote set-url origin https://USERNAME@github.com/USERNAME/PROJECTNAME.git
ssh-add ~/.ssh/id_rsa
cp ~/.ssh/github_rsa ~/.ssh/id_rsa
git clone https://github.com/USERNAME/REPOSITORY.git
git remote add origin ssh://github.com/USERNAME/REPOSITORY.git
git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
git remote -v
origin  https://github.com/USERNAME/REPOSITORY.git (fetch)
origin  https://github.com/USERNAME/REPOSITORY.git (push)
chmod -R 700 /home/ec2-user/
sudo cp ~/.ssh/* /root/.ssh/
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.
ssh-keygen -t rsa -b 4096 -C "youremailaddress@xyz.com"
clip < ~/.ssh/id_rsa.pub
ssh -T git@github.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 config --global core.sshCommand "'C:\Windows\System32\OpenSSH\ssh.exe'"
[core]
    sshCommand = 'C:\\Windows\\System32\\OpenSSH\\ssh.exe'