Você está executando o comando ssh
fora do contexto da sua sessão, portanto pode estar faltando algumas coisas que normalmente estão disponíveis.
Presumivelmente, você está autenticando com uma chave. A chave está disponível no cron job?
- Se o arquivo de chave for protegido por senha, obviamente a chave não está disponível, pois você pode não ter digitado a senha ainda. Mesmo se você tiver digitado a senha, a chave ficará na memória do agente de chave da sua sessão. Os comandos
ssh
iniciados da sua sessão sabem como contatar o agente chave através da variável de ambiente SSH_AUTH_SOCK
, mas ssh
lançado do crontab não tem essa variável.
- Se o seu diretório pessoal estiver criptografado, o arquivo de chaves ainda não estará disponível no momento da inicialização, pois o diretório inicial descriptografado ainda não está montado. O diretório inicial descriptografado não pode ser montado até que você digite a senha de descriptografia.
Se o problema é que a chave é protegida por senha de alguma forma, então não há como estabelecer o túnel antes de digitar a senha. Você tem duas soluções:
- Espere até que a sessão comece a estabelecer o túnel. Isso mantém a segurança da configuração, mas significa que o túnel não está disponível até mais tarde. Você pode adicionar o estabelecimento de encapsulamento aos seus scripts de inicialização de sessão.
- Use uma chave privada armazenada em texto não criptografado no disco para estabelecer o túnel.