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)?