1

我正在使用带有 rsa 验证的 exec 从 PHP 发出 git clone 请求。这个过程似乎开始正常,但是,我很快就得到了错误

Could not create directory 'var/www/.ssh'

我曾以为我已经克服了让 apache 使用 ssh-add 查看自己的目录的问题,但是,情况似乎并非如此。我的两条线:

exec('/usr/bin/ssh-add /path/to/home/dir/id_rsa > ssh.log.txt 2>&1');
exec('/usr/local/bin/git clone git@bitbucket.org:etc.git > git.log.txt 2>&1');

当您在受限的共享主机上时,有没有办法让 apache 用户使用 rsa 密钥调用 .git,这不会让您触摸 /var/www/?

4

1 回答 1

2

使用 GIT_SSH 环境变量:

mkdir /path/to/home/dir/.ssh/
chmod 0700 /path/to/home/dir/.ssh/
chown apache:apache /path/to/home/dir/.ssh/

为 ssh 创建包装器(在主目录 /path/to/home/dir/ssh_wrap 中)

#!/bin/sh
$target=$1;
$command=$2;
ssh -F /path/to/home/dir/.ssh/ssh_config -i /path/to/home/dir/id_rsa $target $command

chmod +x /path/to/home/dir/ssh_wrap

创建文件/path/to/home/dir/.ssh/ssh_config:

 UserKnownHostsFile=/path/to/home/dir/.ssh/known_hosts
 StrictHostKeyChecking=no

在 git clone add 之前的脚本中

 export GIT_SSH=/path/to/home/dir/ssh_wrap

这可能需要改变,你需要明白。更多信息man git man ssh

于 2012-11-10T16:15:46.160 回答