私は現在、PHPを使用してシステムに変更を加えるプロジェクトに取り組んでいます(たとえば、Nginxの構成ファイルの変更/サービスの再起動)。
PHPスクリプトはローカルホストで実行されています。私の意見では、最良の(読む:最も安全な)方法は、SSHを使用して接続を確立することです。次のいずれかのオプションを検討しています。
オプション1:ユーザー名/パスワードをphpセッションに保存し、sudoのプロンプトを表示します
ユーザー名/パスワードを指定してphpseclibを使用し、これらの値をphpセッションに保存して、コマンドごとにsudoの入力を求めます。
オプション2:ルートログインを使用する
ログインスクリプトで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:?