为“apache”用户生成SSH密钥

2022-08-30 10:35:55

如何在 Linux 中为“apache”用户添加 SSH 密钥?

背景

我正在尝试将服务挂钩添加到github,以便在推送到存储库后通知URL。我设置了以下php页面:

<?php `git pull origin master`;  

但是,我得到以下输出:

sh: git: Permission denied

这是因为我为github访问生成的密钥是由我的“root”用户生成的。但是,当我从php执行命令时,它是运行它的“apache”用户。

因此,密钥不对应,并且拒绝拉取权限。

由于我无法将用户从终端切换到“apache”生成密钥,因此我不太确定该怎么做。任何人都可以提出解决方案吗?


答案 1

您可能需要将根生成的密钥复制到 apache 用户的 .ssh 目录中。

假设 apache 的 homedir 是 /var/www (check /etc/passwd),命名键是 id_rsa-git

mkdir -p /var/www/.ssh/
cp /root/.ssh/id_rsa-git /var/www/.ssh/id_rsa

无需复制公钥。

注意:默认情况下,使用的密钥是id_rsaid_dsa。您可以更改复制的密钥的名称以匹配此名称。

您还可以更改id_rsa密钥和 .ssh 目录的所有权:

chown -R apache:apache /var/www/.ssh
chmod 0700 /var/www/.ssh
chmod 0600 /var/www/.ssh/id_rsa

答案 2

由于您是root,因此您可以尝试一下sudo -u apache ssh-keygen -t rsa


推荐