无法从私人服务器克隆 git 存储库

Cannot clone a a git repo from private server

我正在开发 git 基础设施测试目的。我要测试的其中一件事是从 AWS Ubuntu 服务器克隆一个裸 git 存储库。正在输入流

git clone ubuntu@numbers.us-west-2.compute.amazonaws.com:/srv/git/Test_Git.git

我收到以下回复

Cloning into 'Test_Git'...
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights and the repository exists.

如错误所述,您的 ssh 访问已被拒绝。

一些可能的原因:

用户名错误

您正在以用户 ubuntu 的身份登录。确认这是您应该使用的用户名。

错误的 SSH 密钥

验证远程用户是否配置了您用于登录的 SSH 密钥。它通常在该用户的 $HOME/.ssh/authorized_keys 文件中。

authorized_keys

上的错误权限

验证服务器 SSH 文件的权限是否正确。 authorized_keys 文件不能被除所有者之外的任何人写入。通向该文件的路径中的每个目录也是如此。因此,例如,这可能意味着您需要检查这些路径的权限(这可能因您使用的系统和用户而异)。

/
/home/
/home/ubuntu/
/home/ubuntu/.ssh/
/home/ubuntu/.ssh/authorized_keys

没有对 git 存储库的读取权限

您登录的用户必须对 git 存储库具有读取权限才能让您克隆它的副本。在这种情况下,路径是

/srv/git/Test_Git.git/

该路径及其下的所有内容必须可供您登录的用户读取。

理想情况下,该用户应该拥有整个目录及其所有内容。因为稍后当您(大概)想要将更改推送回服务器时将需要它。

查看日志

如果上述 none 解决了问题,假设您可以登录到您的服务器,请检查系统日志以获取 SSH 错误消息。

在 Linux 上找到 SSH 消息的最常见位置是

  • /var/log/messages
  • /var/log/secure

使用 ssh 调试模式

您还可以从客户端获取调试信息,尽管这只会向您显示客户端正在执行的操作。如果您想确定您尝试使用哪个密钥进行登录,您可以通过以下方式找到它。

ssh -v ubuntu@numbers.us-west-2.compute.amazonaws.com