我正在尝试从运行 shell_exec 命令的 php 脚本将 ssh 密钥复制/粘贴到 Ubuntu ec2 实例上的 authorized_keys 文件中。
我收到权限被拒绝错误。这是因为 www-data 用户没有 root 权限。但如果我这样做,那么这是一个潜在的安全威胁,我不确定是否有可行的解决方案。
我在网上查找,但没有找到满意的结果。有没有办法让它从 php 中工作?或者我还能怎么做?
编辑:
用户是 www-data。
PHP 脚本:
$out = shell_exec('sh /var/www/html/updatekey.sh '.$PUBKEY.' 2>&1');
Updatekey.sh脚本:
#!/bin/sh
pkey="${1}";
authpath="/home/ubuntu/.ssh/authorized_keys";
copykey=`grep -qF -- "$pkey" "$authpath" || echo "$pkey" >> "$authpath"`
echo $copykey
我正在将公钥发送到 PHP 脚本以添加到 authorzied_keys 文件中,因为当我运行以下命令时:
ssh-copy-id -i /PATH/TO/PUBLIC/KEY USER@SERVER
我收到权限被拒绝错误。现在我在 PHP 脚本中也遇到了同样的错误。
答案1
有没有办法让它从 php 运行?
并不真地。
如何使用 php shell_exec 将 ssh 密钥复制到 authorized_keys?
我们分两步进行此类操作:
- 让 PHP 将密钥存储到服务器上的文件中。
- 让 cron 脚本使用 then 键获取文件并进行更新。
cron脚本以root身份运行,因此能够进行更新。