使用 PuTTYgen 了解 SSH 私钥和 public 密钥

Understanding SSH private and public keys with PuTTYgen

我使用 PuTTy keygen 创建了一个 public 密钥。我将 public 密钥复制到 david.pub 并发送给将密钥放在服务器上的开发人员 (vps),这样我就可以克隆一个存储库。当我创建 public 密钥时,我输入了一个密码。当我尝试克隆时发生这种情况:

$ git clone my_app:money_app.git new_money_app Cloning into 'new_money_app'... Enter passphrase for key '/c/Users/User1/.ssh/david.pub':

我输入了我设置的密码,这行重复了 3 次Enter passphrase for key '/c/Users/User1/.ssh/david.pub':

然后显示这个之后

 Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

存储库存在。这是我的配置文件的样子:

Host my_app
User git
HostName xx.xx.xxx.xx
PubkeyAuthentication yes
PreferredAuthentications publickey
IdentityFile ~/.ssh/david.pub

我该如何解决这个问题才能克隆存储库?我是 GIT 的新手,我需要重新创建 public 密钥吗?有人告诉我创建一个 public 密钥,我还需要一个私钥吗?

我是一名前端开发人员,所以这很令人困惑。

这不是 Git 问题,只是 ssh。您可以通过尝试 ssh 进入机器来更轻松地调试问题。 ssh my_app 应该会给你同样的问题。

public 密钥不应该有密码,这应该提示您有问题。它一遍又一遍地询问你,因为你输入了密钥没有的密码。您的私钥有密码。

在 ssh 中有两个密钥,public 一个 (~/.ssh/david.pub) 和一个私有的 (~/.ssh/david)。没有私人密钥,您不可能创建 public 密钥。私钥是您的秘密,它与您同在,并且应该受到密码保护以防被盗。 public 键位于您要登录的服务器上。私钥用于解锁用 public 加密的东西(反之亦然)。

问题出在这一行:

IdentityFile ~/.ssh/david.pub

这应该是您的 私钥, ~/.ssh/david.