Apache用户帐号无密码访问服务器 – Ubuntu

我在这个问题上有同样的问题。 如果我再次解释它,我可以使用rsync同步我的本地数据与服务器没有密码(我使用SSH密钥)。 但是当我在PHP中使用exec()函数时,它不起作用。

问上述问题的人自己给了答案。 他说这可以通过允许Apache用户帐户无密码访问服务器来完成。 所以我的问题是如何提供Apache用户帐户密码访问服务器

我的PHP代码是:

echo exec('rsync -aze --progress --size-only /var/tmp/src/File01 serveruser@mycloud.com.lk:/var/tmp/dest/File01'); 

PS:我login到我的机器使用我典型的用户帐户(让说用户名是' bob '),并使用ssh-keygen -t rsa生成ssh密钥。 然后鲍勃有无密码访问服务器。

但是,当我运行PHP命令时,它运行在mod_php下的Apache中,并且通常Apache是​​以自己的用户帐户运行的,与使用服务器的真实世界的人无关。 因此,我生成的密钥不可用于Apache内的PHP。

所以我试图以Apache用户身份login(我认为它是www-data )。 但大多数文章说www-data默认没有密码,不能login为www-data

谢谢。

好的。 终于找到了解决办法。 感谢所有帮助过我的人。

问题是Apache用户无法访问我的密钥。 因此,我不得不为apache用户(它是万维网数据)生成SSH密钥,虽然它不是很安全。 首先以root身份登录。

 mkdir /var/www/.ssh chown -R www-data:www-data /var/www/.ssh 

现在生成如下的ssh密钥。 它会将您的私钥和公钥保存在/var/www/.ssh文件夹中。

 sudo -u www-data ssh-keygen -t rsa 

现在你应该得到这样的东西。

 root@sampath-Vostro-1520:/var/www/.ssh# sudo -u www-data ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/var/www/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /var/www/.ssh/id_rsa. Your public key has been saved in /var/www/.ssh/id_rsa.pub. The key fingerprint is: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx www-data@machine-Vostro-1520 The key's randomart image is: +--[ RSA 2048]----+ | ...o...o..| | o.. o| | + .. .+o| | . .*o+o| | ++ S ..B..| | o . E + | | . . oo | | . . | | | +-----------------+ 

现在将您的公钥复制到远程服务器。

 sudo -u www-data ssh-copy-id -i /var/www/.ssh/id_rsa.pub username@myserver.com 

现在这应该工作。 🙂

 <?php $c='rsync -azv /source/folder/path/ username@myserver.com:/destination/folder/path'; exec($c,$data); print_r($data); ?> 

希望这会有用。 谢谢大家。

通常情况下,您的密钥通过SSH代理加载,使其自动可用,而不是使用这个,你可以手动指定一个身份文件。 如果你生成一个密钥来使用,只要它可以被apache读取,那么它就可以被使用。

Rsync不会让你直接指定标识文件,但你可以传参数给底层的SSH调用:

 echo exec('rsync -az -e "ssh -i /var/www/key.pri" --progress --size-only /var/tmp/src/File01 serveruser@mycloud.com.lk:/var/tmp/dest/File01');