Ferma la configurazione di ssh alla prima partita


18

Ho aggiunto un proxy locale per tutti i miei host nella mia configurazione .ssh, tuttavia voglio sgusciare nella mia VM locale senza il comando proxy. Uscita del mio tentativo ssh:

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

Data la seguente configurazione ssh come posso impedire che ProxyCommand venga applicato alla voce local.dev?

Host local.dev
    HostName dev.myserver.com
    User developer
...
Host *
    ProxyCommand /usr/local/bin/corkscrew 127.0.0.1 8840 %h %p

Risposte:


22

È possibile escludere local.dev da ProxyCommand, utilizzando !prima di esso:

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

Dalla documentazione di ssh_config :

Se viene fornito più di un motivo, devono essere separati da uno spazio bianco.

Una voce di modello può essere annullata prefissandola con un punto esclamativo (`! ') . Se viene abbinata una voce negata, la voce Host viene ignorata, indipendentemente dal fatto che qualsiasi altro motivo sulla riga corrisponda. Le partite negate sono quindi utili per fornire eccezioni per le corrispondenze con caratteri jolly.

La documentazione diceva anche:

Per ogni parametro, verrà utilizzato il primo valore ottenuto . I file di configurazione contengono sezioni separate da specifiche `` Host '' e tale sezione viene applicata solo agli host che corrispondono a uno dei modelli indicati nelle specifiche. Il nome host corrispondente è quello indicato sulla riga di comando.

Quindi, puoi anche disabilitare ProxyCommand per local.dev sostituendo il valore che hai definito in Host *:

Host local.dev
    HostName dev.myserver.com
    User developer
    ProxyCommand none

8

Un'opzione nel file di configurazione viene applicata la prima volta che corrisponde. Poiché non è presente alcun ProxyCommand nella voce host, *verrà utilizzato quello nella voce.

Esistono due modi per aggirare questo:

  • Per gli host in cui non si desidera utilizzare il comando proxy, è sufficiente aggiungere la riga
    ProxyCommand nessuno
  • Per la *voce, si noti in particolare che la voce non deve applicarsi all'host local.devnegandola con a!
    Host! Local.dev *

per separare più host usa lo spazio. virgola (,) non ha funzionato per me. ID distributore: Ubuntu Descrizione: Ubuntu 17.10 Rilascio: 17.10 Nome in codice: artful
Aruna

Grazie @ArunaFromLK - Non riesco a credere di averlo perso, e che nessun altro l'ha notato da 3,5 anni! Ho aggiornato la risposta ora.
Jenny D,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.