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 .