无法克隆,可以 SSH。 "Permission denied (publickey)."

Can't clone, can SSH. "Permission denied (publickey)."

我无法克隆或推送到我服务器上的存储库。

我有一个裸仓库位于目录 home/user/test.git 中的一个目录 user@host,我试图通过 git clone 访问它。我使用 ssh-add <pathtokey> 添加我的 ssh 密钥。它问我密码。然后我就可以ssh user@host成功了。

但是如果我尝试 git clone ssh://user@host/~/test.git 我得到:

Cloning into 'test'...
user@host: Permission denied (publickey).
fatal: Could not read from remote repository.

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

也试过

结果相同

我猜 git 凭据管理器没有提取密钥?

在服务器上 /var/auth/logFeb 20 02:25:36 xxxxx sshd[24674]: Connection closed by authenticating user XXXX x.x.x.x port 56433 [preauth]

git 凭据管理器仅涉及为 HTTPS URL 缓存凭据 (username/password),不涉及 SSH。
只有 ssh-agent 可以参与,用于缓存可能的密码,如果私钥是用它定义的。

我会先尝试使用完整路径,因为 ~ 可能不会被远程 shell 解释,而是本地(~ 有不同的路径):

git clone ssh://user@host/home/user/test.git
# or
git clone user@host:/home/user/test.git

如果不是,请在 git bash 会话中键入:

export GIT_SSH_COMMAND='ssh -v'
git clone ...

OP 确认 in the discussion 它在 bash 会话中工作:

In git bash, I started the ssh-agent,
added the key there, then it worked.

添加到@VonC 的回复中

在 git-bash 中一切正常。

启动ssh-agent的正常流程(通过eval 'ssh-agent' ), 通过 ssh-add <path_to_key> 添加密钥使 git clone 可以工作。

在 PowerShell Core 或 Cmd 中,通过 Windows-Terminal 需要更多工作

ssh-agent 自动启动(假设您之前启动了 OpenSSH Authentication Agent 服务),添加密钥有效,在此之后您可以 ssh,但是 git 命令最初不工作,但如果你这样做

git config --global core.sshCommand C:/Windows/System32/OpenSSH/ssh.exe

这将用 Windows10 实现替换 git-for-windows 附带的(默认)ssh。

在此之后它应该可以在 git-bash 以外的其他方面正常工作。在 Powershell-Core 中确认,命令提示符

另请参阅: https://gist.github.com/danieldogeanu/16c61e9b80345c5837b9e5045a701c99