gpt4 book ai didi

php - Apache 用户帐户无密码访问服务器 - Ubuntu

转载 作者:可可西里 更新时间:2023-11-01 00:32:55 25 4
gpt4 key购买 nike

我在 this 中遇到了同样的问题题。如果我再解释一遍,我可以使用 rsync 无需密码(我使用 SSH key )将我的本地数据与服务器同步。但是当我在 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:我使用我的典型用户帐户登录到我的机器(假设用户名是“bob”),并使用 ssh-keygen -t rsa 生成了 ssh key .然后 bob 无需密码即可访问服务器。

但是,当我运行 PHP 命令时,它在 mod_php 下的 Apache 中运行,通常 Apache 以其自己的用户帐户运行,独立于使用服务器的真实世界的人。因此,我生成的 key 对 Apache 内的 PHP 不可用。

因此我尝试以 Apache 用户身份登录(我认为它是 www-data)。但是大多数文章都说 www-data 默认没有密码,不能以 www-data 登录。

谢谢。

最佳答案

问题是 Apache 用户无法访问我的 key 。因此我不得不为 Apache 用户生成 SSH key (它是 www-data),尽管它不是那么安全。首先以 root 身份登录。

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

现在生成 SSH key 如下。它会将您的私钥和公钥保存在 /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 + |
| . . o o |
| . . |
| |
+-----------------+

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

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

关于php - Apache 用户帐户无密码访问服务器 - Ubuntu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19712778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com