Pare a configuração do ssh no primeiro jogo

16

Eu adicionei um proxy local para todos os meus hosts em minha configuração de .ssh, no entanto, eu quero entrar em meu vm local sem o comando proxy. Saída da minha tentativa de ssh:

debug1: /Users/bbarbour/.ssh/config line 1: Applying options for local.dev
debug1: /Users/bbarbour/.ssh/config line 65: Applying options for *

Dada a seguinte configuração ssh, como evito que o ProxyCommand seja aplicado à entrada local.dev?

Host local.dev
    HostName dev.myserver.com
    User developer
...
Host *
    ProxyCommand /usr/local/bin/corkscrew 127.0.0.1 8840 %h %p
    
por Boiler Bill 26.08.2014 / 17:18

2 respostas

18

Você pode excluir o local.dev do ProxyCommand, usando ! antes dele:

Host * !local.dev
    ProxyCommand /usr/local/bin/corkscrew 127.0.0.1 8840 %h %p

De documentação do ssh_config :

If more than one pattern is provided, they should be separated by whitespace.

A pattern entry may be negated by prefixing it with an exclamation mark ('!'). If a negated entry is matched, then the Host entry is ignored, regardless of whether any other patterns on the line match. Negated matches are therefore useful to provide exceptions for wildcard matches.

A documentação também dizia:

For each parameter, the first obtained value will be used. The configuration files contain sections separated by ''Host'' specifications, and that section is only applied for hosts that match one of the patterns given in the specification. The matched host name is the one given on the command line.

Portanto, você também pode desabilitar o ProxyCommand para local.dev, sobrescrevendo o valor que você definiu em Host * :

Host local.dev
    HostName dev.myserver.com
    User developer
    ProxyCommand none
    
por 26.08.2014 / 17:35
7

Uma opção no arquivo de configuração é aplicada na primeira vez em que coincide. Como você não tem nenhum ProxyCommand na entrada do host, aquele na entrada * será usado.

Existem duas maneiras de contornar isso:

  • Para os hosts em que você não deseja usar o comando proxy, basta adicionar a linha
    ProxyCommand none
  • Para a entrada * , observe especificamente que a entrada não deve se aplicar ao host local.dev , negando-a com um !
    Host !local.dev *
    
por 26.08.2014 / 17:35

Tags