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