如何使用 php shell_exec 将 ssh 密钥复制到 authorized_keys?

如何使用 php shell_exec 将 ssh 密钥复制到 authorized_keys?

我正在尝试从运行 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身份运行,因此能够进行更新。

相关内容