2012-11-10 64 views
1

我正在使用exec与rsa验证从PHP发出git克隆请求。这个过程似乎开始好了,不过,我很快就得到错误为共享主机上的'apache'用户生成ssh密钥

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

我原以为我已经克服了有阿帕奇看向自己的目录使用ssh-增加,然而,这似乎是穷人是这种情况。我的两行:

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

有没有办法让apache用户呼叫使用当你在限制共享主机,不会让你碰在/ var/WWW的RSA密钥的.git /?

回答

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包装(在主目录/路径/到/ 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的克隆前,你的脚本添加

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

这可能需要改变,你需要得到的想法。 man gitman sshman ssh

+0

感谢eicto--这看起来非常接近我所需要的,但** export **被阻止从PHP执行。看起来我会坚持ssh'ing和拉,直到我可以得到一个不同的主机。 – matfr

+0

您可以在您的主目录中创建shell脚本,并在需要时从ssh调用它。不要忘记将其设置为可执行文件或运行为/ bin/bash/path/to/your/script –