Usando o ControlMaster com o usuário www-data

0

No meu aplicativo eu tenho dois servidores (privados e externos) e há uma necessidade de o servidor privado executar um script no servidor externo com uma frequência muito alta.

Para permitir essa taxa de transferência de alta frequência, estou usando ControlMaster para abrir uma conexão ssh persistente (sem ela, o servidor externo trava devido ao alto carregamento da cpu como resultado de lidar com a autenticação).

Esta é a configuração do ssh:

Host <external_host_ip>
  ControlMaster auto
  ControlPath ~/.ssh/cm_socket/%r@%h:%p
  ControlPersist 600
  User user1
  IdentityFile ~/key.pem

Esta configuração funcionou para o usuário 'user1'. Infelizmente, não funcionou para mim para o usuário 'www-data'.

Supondo que a pasta raiz do www-data seja / var / www, adicionei a pasta cm_socket lá e, quando testo a conexão, vejo que algo acontece lá:

$ ll /var/www/.ssh/cm_socket/
srw------- 1 www-data www-data    0 Oct 19 08:49 user1@host_ip:22=

No entanto, isso causou falha no apache e a única coisa que ajudou foi reiniciar o apache.

UPDATE

/ var / www deve ser a raiz do www-data:

 $ cat /etc/passwd | grep www
 www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

Este é o /var/www/.ssh/config:

Host <external_host_ip>
    ControlMaster auto
    ControlPath ~/.ssh/cm_socket/%r@%h:%p
    ControlPersist yes
    User user1
    IdentityFile /home/user1/key_wwwdata.pem

conteúdo e permissões de /var/www/.ssh:

$ ll /var/www/.ssh/
drwxr-xr-x 2 www-data www-data 4096 Oct 19 08:49 cm_socket/
-rw-r--r-- 1 www-data www-data  198 Oct 19 08:44 config

permissão do arquivo de chave:

$ ll /home/user1/key_wwwdata.pem
-rw------- 1 www-data www-data 1675 Oct 18 09:11 /home/user1/key_wwwdata.pem

Existe uma maneira de fazer esta solução funcionar para todos os usuários (incluindo www-data)?

    
por mimusheli 19.10.2016 / 09:03

1 resposta

1

O shell do usuário do www-data geralmente é definido como /usr/sbin/nologin , o que impediria logins do ssh.

Você pode tentar alterar o shell do www-data executando:

sudo chsh www-data

E inserindo /bin/bash como o novo valor de shell.

    
por Weboide 19.10.2016 / 11:34