Dilema de permissões - Chave privada requer 600 para terminal SSH, mais aberto para PHP

0

Eu tenho um arquivo de chave privada que será usado nos dois casos de uso a seguir:

  • SSH -i /path/to/private/key dentro do terminal - Requer 600 conjunto de permissões
  • Uma instrução file_get_contents() no PHP - Requer mais permissões abertas definidas

O arquivo atualmente tem permissões definidas em 600 para permitir o uso no SSH via terminal. No entanto, por causa disso eu recebo uma permissão negada ao tentar ler o arquivo dentro do PHP.

Por favor, alguém pode sugerir uma solução viável, mantendo boa segurança no arquivo de chave, para permitir que eu use o mesmo arquivo de chave para ambos os casos de uso acima mencionados?

Edit: Para esclarecimentos, estou usando o PHPSecLib (em oposição a Extensão SSH2 do PECL ), para se conectar a uma instância do Amazon EC2 no PHP. O seguinte é um exemplo de código:

$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
    
por James 27.08.2013 / 18:10

2 respostas

2

Se você usar suPHP , poderá permitir que o script seja executado sob o mesmo usuário para o script que possui a chave.

EDITAR:

Com base no seu esclarecimento (e em outros comentários), provavelmente seria melhor gerar uma nova chave especificamente para o propósito do seu script e conceder a ele as permissões do seu usuário da web. Geralmente, é melhor ter uma nova configuração de chave por usuário / script.

Para mais informações sobre por que essa é uma prática recomendada, consulte este e este link.

    
por 27.08.2013 / 18:20
1

Se você se preocupa com a segurança da sua chave privada, sua única opção real é gerar uma chave privada diferente para usar com o script PHP; esta chave estaria preferencialmente associada a um comando forçado no lado do servidor, para limitar a exposição resultante da chave privada ser comprometida.

Se você não se preocupa com a segurança da sua chave privada, você pode recompilar o cliente SSH da fonte para que ele possa ser coagido a não se importar com as permissões em sua chave privada arquivo.

E se você simplesmente não se importa com segurança, ponto, você pode executar o script PHP e, assim, (presumivelmente) o servidor web, sob sua própria conta de usuário.

    
por 27.08.2013 / 18:17