在共享主机上为'apache'用户生成ssh密钥

时间:2012-11-10 14:49:12

标签: php git apache

我正在使用带有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 /?

1 个答案:

答案 0 :(得分: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 / 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

中的详细信息