Um host .ssh / config pode ter várias entradas HostName?

5

Eu configurei o encaminhamento de porta do ssh e do roteador para que eu possa fazer ssh em um computador na minha rede doméstica quando não estou em casa. Atualmente tenho duas entradas no meu arquivo .ssh/config para quando estou na minha rede doméstica e outro para quando não estou:

Host mycomputer
  HostName 192.168.X.X

Host mycomputerathome
  HostName my.no-ip.dynamic

Isso funciona, mas estou pensando se posso facilitar as coisas para mim. Eu esperava que houvesse uma maneira de listar várias entradas HostName, de modo que, se a primeira falhar, volta para a segunda:

Host mycomputer
  HostName 192.168.X.X
  HostName my.no-ip.dynamic

Para que ele primeiro tente se conectar a um host na minha rede local e, se isso não estiver presente, ele tentará se conectar usando meu nome de host dinâmico no-ip. Eu tentei inserir dois HostNames, mas executando ssh mycomputer apenas bloqueia não fazer nada.

Desativei a autenticação de senha em favor das chaves, de forma que conectar-me acidentalmente a um computador na rede local, quando não estou em minha rede doméstica, não deveria arriscar minha senha em nenhum lugar que ela não deveria.

É possível especificar HostNames de fallback para tentar se o primeiro não funcionar?

    
por Corey Ogburn 11.07.2018 / 18:14

2 respostas

5

É feio, mas acho que você poderia fazer isso usando o critério exec para Match no status de saída de uma batida de porta, por exemplo

Host mycomputer
  Match exec "nc -z 192.168.1.11 %p"
    HostName 192.168.1.11
  Match !exec "nc -z 192.168.1.11 %p"
    HostName my.no-ip.dynamic

Observe que isso não pode realmente dizer se você está na "sua" rede doméstica - só que você está em um segmento de LAN particular com o mesmo intervalo de endereços que tem um serviço escutando no mesmo endereço / porta .

    
por 11.07.2018 / 19:14
1

Não; se você especificar vários HostName s para um Host entry, somente o primeiro será reconhecido:

$ grep -A5 Host .ssh/config
Host test
   HostName fake.tld.xyzzy
   HostName real.example.com
   HostName 127.1.2.3
   User username
$ ssh test
ssh: Could not resolve hostname fake.tld.xyzzy: Name or service not known
    
por 11.07.2018 / 18:27

Tags