Web サイトを介してプログラムで RSA 公開鍵を authorized_keys ファイルに追加しようとしていますが、解決策を見つけることができませんでした。PHP のfile_put_contents()
関数を使用しようとしましたが、アクセス許可が拒否されたというエラーが発生しました。動作する Python スクリプトがありますが、exec()
コマンドまたはshell_exec()
. 関連する PHP コードは次のとおりです。
if(@$_POST['action']=='submit'){
$key = $_POST['key_field'];
//file_put_contents("/home/biosproject/.ssh/authorized_keys", $key, FILE_APPEND);
$test = "/usr/bin/python savetofile.py \"".$key."\"";
$tmp = shell_exec($test);
}
入力をサニタイズする必要があることは承知していますが、サイトは現在開発中であるため、当面はこのようにテストしています。現在、Apache を実行する XAMPP を使用しています。私が見逃しているもの、または試すことができるものはありますか? PHP exec/shell_exec については、コマンドのすべての部分にフル パス名を使用してみましたが、まだ何も機能していません。Pythonスクリプトは次のとおりです。
#!usr/bin/python
import sys
key = sys.argv[1]
with open("/home/biosproject/.ssh/authorized_keys","a") as append:
diditwork = append.write(key)
print key
前述したように、このスクリプトは機能しますが、PHP スクリプトから呼び出すことはできません。
編集:
私のauthorized_keysファイルは次のようになります:
-rw-rw-rw- 1 biosproject www-data 1200 Apr 15 13:17 /home/biosproject/.ssh/authorized_keys
アップデート:
代わりに、データベース エントリから必要な情報を追加する cron ジョブを使用してアクセス許可をバイパスすることで、問題を解決しました。今すぐ大活躍!