php - 为 'apache' 用户生成 SSH key

标签 php apache git github ssh-keys

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

背景

我正在尝试向 github 添加一个服务 Hook ,以便在我推送到我的仓库后通知 URL。我设置了以下 php 页面:

<?php `git pull origin master`;  

但是我得到以下输出:

sh: git: Permission denied

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

因此 key 不对应,拒绝 pull 权限。

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

最佳答案

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

假设 apache 的 homedir 是 /var/www(检查/etc/passwd)并且命名的 key 是 id_rsa-git :

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

无需复制公钥。

注意:默认使用的 key 是 id_rsaid_dsa。您可以更改复制 key 的名称以匹配此名称。

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

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

关于php - 为 'apache' 用户生成 SSH key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7306990/

相关文章:

php - 最近采访 Q - 为多个用户操作页面上的对象?

php - 计算大于 20 的值的数量

java - 从 Android 应用程序与服务器通信时出现各种 HTTPs 错误

Apache带参数重写规则?

用于压缩功能分支提交的 Git 别名

php - Codeigniter 在 View 中回显结果

php - MYSQL 产品列表网格

php - 如何从网络创建不可访问的 xampp 服务器?

git - 如何最好地与 SmartGit 共享代码

android - repo 初始化警告 : failed to restrict file handles