У меня есть файл закрытого ключа, который будет использоваться в следующих двух случаях:

  • SSH -i /path/to/private/key в терминале - требуется 600 разрешений
  • Оператор file_get_contents() в PHP - требует больше открытых прав доступа

Файл в настоящее время имеет разрешения, установленные на 600 чтобы разрешить использование в SSH через терминал. Однако из-за этого я получаю отказано в разрешении при попытке прочитать файл в PHP.

Кто-нибудь может предложить жизнеспособное решение, сохраняя при этом хорошую безопасность файла ключа, чтобы я мог использовать один и тот же файл ключа для обоих вышеупомянутых вариантов использования?


Изменить: Для пояснения, я использую PHPSecLib (в отличие от расширения PECL SSH2), чтобы подключиться к экземпляру Amazon EC2 в PHP. Ниже приведен пример кода:

$key = new Crypt_RSA();
$key->loadKey(file_get_contents('private_key.pem'));

$ssh = new Net_SSH2('amazon-ec2-ip');
$ssh->login('ubuntu', $key); // HERRO PRIVATE KEY

2 ответа2

2

Если бы вы использовали suPHP, вы могли бы разрешить запуск сценария под тем же пользователем для сценария, которому принадлежит ключ.

РЕДАКТИРОВАТЬ:

Основываясь на ваших разъяснениях (и других комментариях), было бы лучше всего сгенерировать новый ключ специально для вашего сценария и дать ему разрешения вашего веб-пользователя. Обычно лучше всего настроить новый ключ для каждого пользователя / скрипта.

Для получения дополнительной информации о том, почему это лучшая практика, посмотрите на эту и эту ссылку.

1

Если вы вообще заботитесь о безопасности своего закрытого ключа, единственным реальным вариантом является создание другого закрытого ключа для использования со сценарием PHP; этот ключ предпочтительно должен быть связан с принудительной командой на стороне сервера, чтобы ограничить уязвимость в результате компрометации закрытого ключа.

Если вас совсем не волнует безопасность вашего закрытого ключа, вы можете перекомпилировать SSH-клиент из исходного кода, чтобы его можно было принудительно игнорировать разрешения для вашего файла закрытого ключа.

И если вас просто не волнует безопасность, точка, тогда вы можете запустить скрипт PHP и, таким образом (предположительно) веб-сервер, под своей собственной учетной записью пользователя.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .