Problema ao usar o ssh com o crontab

0

Eu preciso estabelecer um túnel ssh permanente entre o servidor privado por trás do firewall e um servidor público para que eu possa ssh no servidor privado a qualquer momento através do servidor público.

Quando eu manualmente executo isso em um servidor privado,

ssh -R 6666:localhost:22 username@public_host

tudo funciona bem. Mas quando eu coloco essa linha em crontab -e para que o túnel seja restabelecido automaticamente na reinicialização, ele não funciona. Alguma ideia do que deu errado?

Observação: par de chaves pública / privada entre servidores já definidos e funcionando bem.

    
por Nxter 18.07.2016 / 11:57

2 respostas

1

Use o autossh, que faz isso por você. Ele é projetado para conexões persistentes que não precisam ser iniciadas ou reiniciadas manualmente, são monitoradas automaticamente e fazem qualquer um dos mesmos trabalhos de encapsulamento que um cliente ssh normal faz.

    
por 18.07.2016 / 12:20
0

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.
por 19.07.2016 / 03:04

Tags