使用Git时如何解决权限被拒绝(公钥)错误?
我在Mac Snow Leopard上,刚刚安装了使用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 我错过了什么? 我也尝
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'