Você está usando o Ubuntu Linux, um sistema operacional que tem sido um sistema operacional systemd desde 2016 e foi um sistema operacional Upstart por uma década antes disso, desde 2006. van Smoorenburg rc
scripts não são o caminho, especialmente para novos coisas.
E especialmente neste caso. Isso é quase um candidato para o House of Horror . Em seu sistema, uma unidade de serviço gerada está executando um processo para interpretar um script, que bifurca um processo para executar su
(abusando dele para descartar privilégios), que bifurca um processo para executar um shell, que bifurca um processo para interpretar outro script , que executa um supervisor do Daemon de Poor Man do loop infinito que bifurca repetidamente ssh
.
E tudo isso apenas para fazer o que um gerente de serviços pode fazer de qualquer maneira : executar um programa específico como um usuário específico e reiniciá-lo toda vez que ele sair.
Aprenda journalctl -b
para ler os registros e aproveite essa base simples:
# /etc/systemd/system/email_tunnels.service [Unit] Description=E-mail and HTTP tunnels over SSH Documentation=https://unix.stackexchange.com/a/465353/5132 [Service] User=cal Type=simple ExecStart=/usr/bin/ssh -N -D5080 -Llocalhost:10110:xx.xx.xx.xx:110 -Llocalhost:10025:xx.xx.xx.xx:25 [email protected] RestartSec=120 [Install] WantedBy=multi-user.target
Em seguida, você só precisa garantir que este serviço seja executado depois que seu diretório pessoal, contendo seus arquivos de identidade SSH, estiver disponível. Claro, com algumas configurações, este é apenas o caso após você ter logado e seu diretório pessoal ter sido montado, descriptografado e outros. Nesse caso, você também pode não configurar um serviço em nível de sistema em todos e, em vez disso, executá-lo como um serviço de usuário sob sua instância por usuário do systemd, que é iniciada no primeiro login:
# /home/cal/.config/systemd/user/email_tunnels.service [Unit] Description=E-mail and HTTP tunnels over SSH Documentation=https://unix.stackexchange.com/a/465353/5132 [Service] Type=simple ExecStart=/usr/bin/ssh -N -D5080 -Llocalhost:10110:xx.xx.xx.xx:110 -Llocalhost:10025:xx.xx.xx.xx:25 [email protected] RestartSec=120 [Install] WantedBy=default.target
Use a opção --user
para systemctl
para controlar esse serviço por usuário, é claro.
Leitura adicional
- link
- Jonathan de Boyne Pollard (2015). A casa do sistema de terror . Respostas frequentemente dadas.
- link
- Jonathan de Boyne Pollard (2014). Não abuse do su para eliminar privilégios de usuário . Respostas frequentemente dadas.
- link
- Por que o serviço systemd não pode acessar o diretório inicial do usuário, mas funciona depois que o serviço é reiniciado?