我目前正在做一个项目,用 PHP 对系统进行更改(例如更改 Nginx 的配置文件/重新启动服务)。
PHP 脚本在 localhost 上运行。在我看来,最好的(阅读:最安全的)方法是使用 SSH 建立连接。我考虑以下选项之一:
选项 1:在 php 会话中存储用户名/密码并提示输入 sudo
使用带有用户名/密码的 phpseclib,将这些值保存在 php 会话中,并为每个命令提示输入 sudo。
选项 2:使用 root 登录
在登录脚本中使用带有 root 用户名和密码的 phpseclib。在这种情况下,您不必向用户询问 sudo。(不是真正安全的解决方案)
<?php
include('Net/SSH2.php');
$ssh = new Net_SSH2('www.domain.tld');
if (!$ssh->login('root', 'root-password')) {
exit('Login Failed');
}
?>
选项 3:使用从文件中读取的公钥进行身份验证
使用带有公钥的 PHP SSHlib 进行身份验证并将公钥放在 www 根目录之外。
<?php
$connection = ssh2_connect('shell.example.com', 22, array('hostkey' => 'ssh-rsa'));
if (ssh2_auth_pubkey_file($connection, 'username', '/home/username/.ssh/id_rsa.pub', '/home/username/.ssh/id_rsa', 'secret')) {
echo "Public Key Authentication Successful\n";
} else {
die('Public Key Authentication Failed');
}
?>
选项 4:?