Existem vários erros no seu script crontab.
-
O que está causando as desconexões é o fato de que o script precisa não apenas de permissão de execução, mas também do conjunto de bits suid ( sudo chmod 4755 / pah / to / script ) < strong> if você está executando o shell script como root.
-
Os ambientes crontab são muito diferentes dos usuários. Por isso, é sempre necessário usar caminhos completos para os comandos:
/usr/bin/sshpass -p <password> /usr/bin/ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null <user>@<url> -p <port> -R222<random_number>:localhost:22
-
Você deve adicionar os sinalizadores -t -t ao comando ssh (sim, duas vezes) porque isso suprime o erro que um tty não pode ser alocado.
-
Embora eu tenha certeza dos erros anteriores, há um que pode causar problemas, não tenho certeza e não tenho tempo para testá-lo: você tem dois sinalizadores> -p em seu comando, e não tenho certeza se eles foram corretamente interpretados pelo shell. Se eu fosse você, colocaria o comando ssh , com todas as suas opções, dentro de aspas simples ou duplas, só para tentar.
A objeção anterior e o uso de uma senha aberta podem ser evitados se você usar chaves criptográficas, nesse caso você pode adicionar ao seu arquivo .ssh / config as seguintes linhas:
Host ShortName
HostName The.Full.HostName.com
User yourname
Port your-non-standard-port
IdentityFile /path/to/crypto/keyù
IdentitiesOnly yes
e então o one-liner se tornaria
/usr/bin/ssh -t -t -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -R222<random_number>:localhost:22 ServerName