Como posso induzir o ssh a se conectar usando diferentes configurações baseadas na localização atual?

6

Este é o caso de uso a seguir: querendo ssh server1 em três cenários:

  • server1 está na rede atual, vá para ele
  • server1 não está na rede atual e você precisa usar um gateway (gw1) para acessá-lo, não é um grande problema, pois você pode usar ~/.ssh/config para definir o tunelamento para este
  • você está em uma rede que não permite acessar o primeiro gw1, então você usará o gw2 para isso.

Resultado desejado: poder usar o mesmo comando e poder se conectar ao servidor.

    
por sorin 08.04.2012 / 01:09

1 resposta

1

Você meio que já sugeriu a solução, e com a dica adicional de dave4420 eu meio que sinto que estou trapaceando postando uma resposta.

Essencialmente, a diretiva ssh-config ProxyCommand resolve o problema de "como eu me conecto" para os dois casos não locais. A questão restante se resume a "como eu uso um comando e ignoro o problema de descobrir qual caso usar."

  • Defina um apelido de host em seu arquivo .ssh / config para cada um dos três cenários: Host server1a, Host server1b, Host server1c.

  • Defina um quarto apelido que será seu comando para conectar-se a este servidor, sempre: Host server1.

  • Escreva um script que implemente a lógica que você definiu na sua pergunta. Eu não posso pseudo-codificar isso aqui porque não tenho certeza de quais testes você usaria para determinar em qual dos três casos você está. Nos três casos, você tem um comando ssh para usar, por exemplo. %código%. Use este script como ssh server1a para o quarto apelido.

Agora, ProxyCommand fica com proxy para ssh server1 dependendo do contexto.

Mais informações sobre ssh server1[abc] em Truques SSH idiotas .

    
por 11.04.2012 / 03:07

Tags