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


当前回答

如果用户未生成之前设置的ssh公私钥对

此信息在聊天上工作,但可以应用于所有其他支持SSH pubkey身份验证的git存储库。(参见[gitolite][1], gitlab或github。)

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

First you'll want to cd into your .ssh directory. Open up the terminal and run: cd ~/.ssh && ssh-keygen Next you need to copy this to your clipboard. On OS X run: cat id_rsa.pub | pbcopy On Linux run: cat id_rsa.pub | xclip On Windows (via Cygwin/Git Bash) run: cat id_rsa.pub | clip On Windows (Powershell) run: Get-Content id_rsa.pub | Set-Clipboard (Thx to @orion elenzil) Add your key to your account via the website. Finally setup your .gitconfig. git config --global user.name "bob" git config --global user.email bob@... (don't forget to restart your command line to make sure the config is reloaded) That's it you should be good to clone and checkout.

更多信息请访问https://help.github.com/articles/generating-ssh-keys(感谢@Lee Whitney) [1]: https://github.com/sitaramc/gitolite

-

如果用户已经生成了之前设置的ssh公私钥对

检查哪个密钥已被授权在您的github或gitlab帐户设置 确定必须从本地计算机关联哪个相应的私钥

Eval $(ssh agent -s)

定义键的位置

ssh-add ~ / . ssh / id_rsa

其他回答

我帮助了以下方面:

打开终端(Git Bash) 删除.ssh目录下的所有文件或重命名并创建新的.ssh文件夹。 按照说明的步骤操作: 生成新的SSH密钥 将SSH密钥添加到SSH -agent

系统:Windows 10。

最简单的方法之一

〇前往终点站

  git push <Git Remote path> --all

在我的情况下,我重新安装了ubuntu,用户名从以前的改变。在这种情况下,生成的ssh密钥也与之前的密钥不同。

这个问题通过在存储库中复制当前的ssh公钥来解决。密钥将在用户的/home/.ssh/id_rsa.pub中可用

让我也分享一下我的经验,

我试图从Gerrit回购中克隆一些项目,我在帐户设置中获得了我的公钥。

在第一次尝试克隆git时,我得到了以下错误:

Unable to negotiate with XX.XX.XX.XX port XXX: no matching key exchange
method found. Their offer: diffie-hellman-group1-sha1

我发现我需要通过SSH选项-oKexAlgorithms=+diffie-hellman-group1-sha1以某种方式来git克隆。

希望GIT_SSH_COMMAND环境变量完成了这项工作:

export GIT_SSH_COMMAND="ssh -oKexAlgorithms=+diffie-hellman-group1-sha1"

但是git克隆仍然没有开始工作。现在它抛出(关于主题):

Permission denied (publickey).

我已经得到SSH密钥,不想重新生成它们。我检查了普通的SSH连接到主机,它是ok的:

****    Welcome to Gerrit Code Review    ****

  Hi XXXXX, you have successfully connected over SSH.

  Unfortunately, interactive shells are disabled.
  To clone a hosted Git repository, use:

  git clone ssh://xxxxx@xx.xx.xx:xxx/REPOSITORY_NAME.git

我有点困惑。我重新开始并通过-vvv选项打开SSH的调试。我看到了下面这些:

debug1: read_passphrase: can't open /dev/tty: No such device or address

可能,这是GIT_SSH_COMMAND env变量的开销-我的密钥是用passphrase保护的(我在检查登录到git repo主机时输入了它)。

所以,我决定去掉这个短语。一个简单的命令帮助了我:

ssh-keygen -p

然后,我输入了我的“旧密码”的密码短语,并在“新密码”上按了两次ENTER键,让它空着,即根本没有密码短语,并确认我的选择。

之后,我在本地磁盘上获得了新克隆的回购。

基本的GIT指令没有引用SSH密钥之类的东西。沿着上面的一些链接,我发现了一个git帮助页面,它一步一步地解释了如何在各种操作系统上做到这一点(链接将检测您的操作系统并相应地重定向):

http://help.github.com/set-up-git-redirect/

它介绍了GITHub所需的所有内容,并给出了详细的解释,例如“为什么在创建RSA密钥时添加密码短语”。我想我应该把它贴出来,说不定能帮助到别人……