2012-11-10 37 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 –