在 Apache 虚拟主机上设置 Git 公钥



我有一个运行CentOS 7 Apache服务器的VPS。我的网站位于/var/www/domain.com 目录中,我在设置 git 时遇到问题。

我想使用公钥连接到我的 git 存储库,但我不断得到

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/www/.ssh/id_rsa.pub中设置了一个 .ssh 公钥,使用

sudo ssh-keygen

我将密钥添加到BitBucket,但无论我尝试什么,我都会遇到错误。

有什么建议吗?

P.S. 分配给/var/www/.ssh 的所有者和组是 apache:apache with0700 文件夹和 =>/var/www/.ssh/下所有文件的权限

另外,我确实有一个私钥位于/var/www/.ssh/id_rsa,我的/var/www/.ssh/config 文件如下所示:

Host bitbucket.org
 IdentityFile /var/www/.ssh/id_rsa

公钥应该转到 BitBucket,而私钥最有可能转到默认位置~/.ssh/id_rsa

请注意,如果您覆盖了那里的任何现有私钥,您将无法访问您最初访问的那些系统。最好生成或提供与~/.ssh/id_rsa中已有的任何私钥匹配的公钥。

如果您确实想存储与其默认位置分开的自定义私钥,则必须在 git 设置中对其进行自定义。

总结一下:

  • 确保您在 ~/.ssh/id_rsa 中存储了私钥。
  • 将匹配的公钥发送到 BitBucket。
  • 您可以在 ~/.ssh/id_rsa/pub 存储公钥的副本以妥善保管。但是,它不会被使用。
  • 确保为以下目录设置了正确的权限:
    • 您的主目录 ( ~ (
    • ~/.ssh目录
    • 私钥 - ~/.ssh/id_rsa .
    • 以及~/.ssh下的其他几个重要文件。

您可以使用以下脚本来修复权限(如果它被破坏(:

chmod go-w ~
[[ ! -d ~/.ssh ]] && mkdir ~/.ssh
chmod 700 ~/.ssh
[[ -f ~/.ssh/id_rsa ]] && chmod 600 ~/.ssh/id_rsa
[[ -f ~/.ssh/id_rsa.pub ]] && chmod 640 ~/.ssh/id_rsa.pub
[[ -f ~/.ssh/authorized_keys ]] && chmod 640 ~/.ssh/authorized_keys
chown ${USER}: ~
chown -R ${USER}: ~/.ssh

在大多数情况下,这应该可以解决与权限相关的问题,因为如果设置不正确,ssh 将拒绝工作。如果你有任何其他方式,你会让你的系统可能容易受到攻击,即使ssh还不起作用,你的私钥也可能被攻击破坏或被盗。

确保示例脚本没有从其原始版本进行修改(其他人没有进行堆栈溢出编辑(,除非它已正确记录为什么进行编辑。

最新更新