Aplique somente a palavra-chave Match ao único Host na configuração ssh

7

Eu tenho um host no qual eu ssh. Às vezes, estou dentro da mesma rede e posso ssh diretamente nela, outras vezes estou fora dela e preciso usar um proxy.

Como o ssh via servidor proxy é muito mais lento que o direto, eu gostaria de ter minha configuração ssh configurada de modo que eu tente conectar-me diretamente, voltando ao proxy se isso falhar.

Atualmente, a configuração é semelhante:

    Host proxy_server
    User user
    Port port
    Hostname some_domain

    Host target_host
    User user
    Port port
    Hostname ip_addr_of_host
    Match exec not_inside_network
    ProxyCommand ssh -W %h:%p proxy_server

A entrada target_host é a última entrada no meu arquivo de configuração, mas not_inside_network é chamado por qualquer conexão ssh com servidores não relacionados no arquivo de configuração. Como posso fazer com que Match se aplique apenas a este servidor?

    
por James Tocknell 13.08.2014 / 05:28

1 resposta

10

Match é bastante parecido com Host . Não existe como um subconjunto do Host da mesma forma que outras opções.

Mas você pode especificar vários critérios em uma correspondência e eles parecem funcionar como um curto-circuito AND. Então, isso deve ser possível e útil para você:

Match host target_host exec not_inside_network
    ProxyCommand ssh -W %h:%p proxy_server

Esta regra será verificada em cada ssh. Mas, para hosts que não correspondam a "target_host", a correspondência falha imediatamente e passa para a próxima palavra-chave Match ou Host (se houver). Somente se o host for "target_host", o exec ocorrerá. Em seguida, a verdade dessa instrução determinará se o ProxyCommand será invocado ou não.

Para ver a lógica ocorrer, execute com -vvv. Você deve ver algumas verificações de correspondência no debug3.

    
por 13.08.2014 / 10:28