1

rsa検証付きのexecを使用して、PHPからgit cloneリクエストを作成しています。このプロセスは正常に開始されたようですが、すぐにエラーが発生します

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

ssh-add を使用して apache が独自のディレクトリを参照することを克服したと思っていましたが、そうではないようです。私の2行:

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');

/var/www/に触れさせない制限された共有ホスティングを使用しているときに、Apacheユーザーがrsaキーを使用して.gitを呼び出す方法はありますか?

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 に答える