Tem um usuário não conta privilegiado ssh em outra caixa?

4

Eu sei como fazer com que um usuário faça ssh em outra caixa com uma chave:

ssh -l targetuser -i path/to/key targethost

Mas e os usuários que não são da conta, como apache ? Como esse usuário não possui um diretório inicial no qual possa gravar um diretório .ssh , a coisa toda continua falhando:

$ sudo -u apache ssh -o StrictHostKeyChecking=no -l targetuser -i path/to/key targethost
Could not create directory '/var/www/.ssh'.
Warning: Permanently added '<hostname>' (RSA) to the list of known hosts.
Permission denied (publickey).

Eu tentei variações usando -o UserKnownHostsFile=/dev/null e definindo $HOME para /dev/null e nenhuma delas fez o truque. Eu entendo que sudo provavelmente poderia consertar isso para mim, mas estou tentando evitar a necessidade de uma configuração manual do servidor, já que esse código será implantado em vários ambientes diferentes.

Alguma idéia?

Veja alguns exemplos do que tentei que não funcionam:

$ sudo -u apache export HOME=path/to/apache/writable/dir/ ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=path/to/apache/writable/dir/.ssh/known_hosts -l deploy -i path/to/key targethost
$ sudo -u apache ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=path/to/apache/writable/dir/.ssh/known_hosts -l deploy -i path/to/key targethost
$ sudo -u apache ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -l deploy -i path/to/key targethost

Eventualmente, usarei esta solução para executar o rsync como o apache user.

    
por Daniel Quinn 15.05.2010 / 00:02

3 respostas

0

Zoredache tinha isso. Nem uma única opção que passei na linha de comando poderia salvar-me, pois o arquivo de chave privada estava definido como 600 e pertencente ao meu próprio usuário. Minha culpa. Desculpas para todos: - (

    
por 15.05.2010 / 02:10
0

Basta criar /var/www/.ssh/ e dar permissão de gravação para o Apache ou alterar o $ HOME do Apache para um diretório onde ele possa escrever.

    
por 15.05.2010 / 00:18
0

que tal adicionar o seguinte a /etc/sudoers

someuser  ALL = (apache) NOPASSWD: /usr/bin/rsync [options]

que permitirá que algum usuário execute sudo -u apache /usr/bin/rsync [options] sem uma senha (conveniente para o script ... simplesmente insira explicitamente as opções de rsync, para que elas não possam fazer nada / mas / isso).

    
por 15.05.2010 / 21:43

Tags