我如何知道 git server 使用哪种授权方法?

Posted

技术标签:

【中文标题】我如何知道 git server 使用哪种授权方法?【英文标题】:How do I know which authorisation method git server uses? 【发布时间】:2017-02-08 17:52:54 【问题描述】:

我正在尝试推送到 git 服务器:

git remote add origin ssh://git@git.example.com:9922/test
git push 

回复如下:

git@git.example.com's password:

我正在输入我的 ssh 密钥的密码,但它失败了。我什至使用this method 检查了密码的正确性。

3 次尝试失败后,服务器响应:

Permission denied (publickey,password).
fatal: Could not read from remote repository.

这是否意味着存储库也受密码保护,而不仅仅是受 ssh 保护?或者这只是 ssh 身份验证不起作用?

【问题讨论】:

这是失败的 ssh 身份验证步骤。很可能您没有正确注册您的密钥。 您的密钥要么未被使用,要么未被接受。尝试ssh -vvv git@git.example.com -p 9922 并发布输出。您的密钥在哪里,您是如何生成它并将其传递给服务器的? 【参考方案1】:

我正在输入我的 ssh 密钥的密码,但它失败了。我什至用这种方法检查过密码的正确性。

这是问题的一部分。它不会提示您输入密钥的密码,而是提示您输入 git@git.example.com 的密码。换句话说,它在 git.example.com 上提示 git 用户的密码,而不是您的密钥密码。

这通常表明您设置了错误。通常,您的公钥需要添加到某个地方,最终将进入authorized_keys 文件(取决于服务的实现方式)。届时,该服务将识别您的密钥并要求进行交换,这将导致它提示输入密钥的密码(假设您尚未将其添加为正在运行的 ssh-agent)。

具体如何执行此操作实际上取决于另一端运行的服务。因此,在没有任何其他信息的情况下,我能提供的唯一建议是查看该服务的文档。

【讨论】:

如果没有提示输入密码,那么可能是没有添加公钥【参考方案2】:

Git 本身不使用任何身份验证方法。

检查你的ssh服务器配置,你可以看看远程服务器上的这些文件:

/home/git/.ssh/authorized_keys /etc/ssh/sshd_config

可能还有其他取决于您的 ssh 服务器配置。

【讨论】:

以上是关于我如何知道 git server 使用哪种授权方法?的主要内容,如果未能解决你的问题,请参考以下文章

编码类型,如何确定[关闭]

使用 Passport 授权时为 API 测试设置 Postman

如何根据图像质量确定使用哪种 OCR 方法

使用哪种授权类型来验证第三方客户端的 API 访问权限?

javadoc 如何知道每个文档注释用于哪种方法?

如何使用 cmap 知道目标值使用哪种颜色