无法克隆,可以 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 clone ssh://user@host/home/user/test.git
git clone user@host:home/user/test.git
git clone user@host:/home/user/test.git
结果相同
我猜 git 凭据管理器没有提取密钥?
在服务器上 /var/auth/log
说
Feb 20 02:25:36 xxxxx sshd[24674]: Connection closed by authenticating user XXXX x.x.x.x port 56433 [preauth]
- Git版本:
git version 2.30.1.windows.1
- Git 凭据管理器:
Git Credential Manager version 2.0.318-beta+44acfafa98 (Windows, .NET Framework 4.0.30319.42000)
git config -l
报告 credential.helper=manager-core
- 尝试了
PowerShell
和 git bash
shell,结果相同
user
具有对存储库的读取、执行权限
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
我无法克隆或推送到我服务器上的存储库。
我有一个裸仓库位于目录 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 clone ssh://user@host/home/user/test.git
git clone user@host:home/user/test.git
git clone user@host:/home/user/test.git
结果相同
我猜 git 凭据管理器没有提取密钥?
在服务器上 /var/auth/log
说
Feb 20 02:25:36 xxxxx sshd[24674]: Connection closed by authenticating user XXXX x.x.x.x port 56433 [preauth]
- Git版本:
git version 2.30.1.windows.1
- Git 凭据管理器:
Git Credential Manager version 2.0.318-beta+44acfafa98 (Windows, .NET Framework 4.0.30319.42000)
git config -l
报告credential.helper=manager-core
- 尝试了
PowerShell
和git bash
shell,结果相同 user
具有对存储库的读取、执行权限
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