Executar comando quando uma conexão de configuração ssh específica falha

0

Isso é um pouco difícil, mas qual seria a melhor maneira de obter o ssh, se uma conexão falhar, execute um comando e tente se conectar novamente.

Para compartilhar meu caso de uso, eu estou ssh-ing sobre um túnel ssh para acessar um computador por trás de um firewall, ou seja, no meu ~ / .ssh / config é:

Host tunnel
    HostName 192.168.1.27

Host target
    HostName localhost
    Port 2003

e para que ssh target funcione, eu preciso primeiro ter o ssh -N -L 2003:localhost:22 tunnel sendo executado em segundo plano. Resolvi fazer isso com um único comando: screen -d -m ssh -N -L 2003:localhost:22 tunnel .

Não é muito chato executar esse comando quando ssh target falha, mas seria legal se o ssh pudesse de alguma forma executá-lo automaticamente quando a conexão falhar.

    
por user474855 29.07.2015 / 16:26

1 resposta

0

Solução muito melhor que o tunelamento está usando o ProxyCommand, conforme descrito aqui: Forward SSH tráfego através de uma máquina do meio

Para corresponder ao seu caso de uso:

Host tunnel
  HostName 192.168.1.27
Host target
  HostName localhost
  Port 2003
  ProxyCommand ssh tunnel -W %h:%p

ou

  ProxyCommand ssh tunnel nc %h %p

Em seguida, apenas ssh target faz tudo por você.

    
por 29.07.2015 / 21:30