Regexp in .ssh / config


12

Al lavoro, spesso devo accedere agli host che seguono uno schema di denominazione comune, ad es. qc01- qc12, hc01- hc10e così via. Tutti questi devono ottenere gli stessi valori di configurazione nel mio laptop .ssh/config. Certo, potrei usare le voci per gli host qc*e hc*, ma mi chiedo se invece è in qualche modo possibile usare espressioni regolari?

Risposte:




3

Puoi usare espressioni regolari complete nel tuo ssh_config.

La documentazione pertinente è l'IMO molto difficile da leggere e comprendere. Lo capisco solo perché ho un'esperienza Linux di oltre 13 anni e 8+ anni di utilizzo ssh. Quindi, ecco il mio riassunto della documentazione:

  • man ssh_config descrive una funzione chiamata Match
  • poi c'è una funzione chiamata execche ti permette di usare un comando shell arbitrario per determinare una corrispondenza
  • il passaggio dei parametri di input al comando di shell arbitrario è possibile e descritto nella sezione etichettata TOKENS

Nel mio caso ho finito per usare nel mio~/.ssh/config :

Match exec "echo %h | grep -q 'NAME[0-9]\+$'"
    User USER
    IdentityFile /path/to/identity/file
    Hostname %h.fully.qualified.domain.name

Il test deve essere fatto con qualcosa di complicato come questo. E per fare quel test che chiami ssh -vvv HOSTNAME. Che mostrerà esattamente cosa sta succedendo e se il tuo nuovo Matchè implementato correttamente.


0

Estensione della risposta di Trevor:

Sono anche possibili host più complessi, come la corrispondenza foo123.123e foo10.10in una regola SENZA avere voci DNS per i nomi host utilizzati:

Match exec "echo %h | grep -q 'foo[0-9]\+.[0-9]\+$'"
    Port 1234 # just to show it can be paired with non-default ports too,
              # see %p in man ssh_config
    ProxyCommand /usr/bin/nc 10.10.$(echo %h | sed -e 's/foo//') %p

Utilizzo del ProxyCommand per manipolare il contenuto di% h con la shell e connettersi alla porta giusta tramite un netcat. In questo modo è possibile creare impostazioni predefinite per la categoria di host, senza creare singole voci.

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.