【发布时间】:2013-10-16 23:18:31
【问题描述】:
我已经设置了一个 PHP 脚本来执行 GitHub 拉取:
这包含在我的 Github 文件夹中 /home/mysite/public_html/github
github_pull.php
<?php
echo `git pull 2>&1`;
?>
我的服务器已经有了 SSH 公钥,就像我从终端执行 git pull 一样:
ssh username@host.com
cd public_html/github
git pull
这很成功(但是我必须先输入 rsa 密钥的密码) 更新:不再需要密码(参见 cmets)
但是,当我运行 github_pull.php 时,我收到以下错误:
权限被拒绝(公钥)。致命:远端意外挂断
SSH 密钥包含在/home/mysite/.ssh/id_rsa
当我跑步时
<?php echo `whoami`;
它输出mysite
【问题讨论】:
-
执行脚本的用户,通常是 Apache 的
www_data是否有权访问 ssh 密钥?另请注意,用户可能正在查看密钥的不同位置。 -
(1) 您的网络服务器是以您的用户身份运行,还是以
www-data身份运行? (2) 网络服务器可以读取 SSH 密钥吗? (3) 网络服务器是否真的在寻找那个密钥? (你可以随时尝试export GIT_SSH="your ssh command") -
however I do have to enter the password for the rsa key first这意味着不能以非交互方式使用密钥。 IE。即使密钥可用,它也不起作用。 -
执行脚本的用户是
mysite。 .ssh 权限为 0700,id_rsa.pub 权限为 0640,id_rsa 权限为 0600。如何指定脚本的密钥位置? -
创建一个没有密码的密钥,将其添加到您的 github 帐户并使用它。 test it in the same way you would test any ssh problem。请注意,您不需要需要 ssh 访问问题
git pull(除非它是私人回购) - 您可以改用https。