Fichier de configuration SSH - Utilisateurs multiplules pour le même groupe d'hôtes

0

Actuellement, j'ai le fichier de configuration ssh suivant:

Host 172.30.*
  ControlMaster auto
  ControlPath ~/.ssh/cm_socket/%r@%h:%p

  ServerAliveInterval    60
  TCPKeepAlive           yes
  ProxyCommand           ssh -i /home/ehud/.ssh/my-secret1.pem -q -A [email protected] nc %h %p
  ControlMaster          auto
  ControlPath            ~/.ssh/mux-%r@%h:%p
  ControlPersist         8h
  User                   ubuntu
  IdentityFile           /home/ehud/.ssh/my-secret1.pem

Maintenant, j'ai d'autres machines dans le même sous-réseau (172.30. *) Mais elles ont un fichier PEM secret différent. Je voudrais ajouter la même configuration avec un fichier PEM secret différent et appeler SSH avec un indicateur qui me redirigera vers le fichier secret approprié.

C'est possible??

Merci

Ehud Lev
la source
Le titre dit multiple userscomme si vous vouliez faire quelque chose avec le Userparamètre; mais le corps de votre question suggère qu'il en soit ainsi IdentityFile. J'espère vous avoir bien compris et ma réponse est utile.
Kamil Maciorowski

Réponses:

1
ssh -i '/home/ehud/.ssh/my-secret2.pem' …
ssh -o 'IdentityFile=/home/ehud/.ssh/my-secret2.pem' …

Chacune des commandes ci - dessus charger my-secret2.pempremier fichier, mais puisque vous pouvez spécifier plusieurs fichiers d'identité (voir man 1 ssh, en -ioption), le fichier my-secret1.pemdonné dans votre ssh_configvolonté peut aussi être jugé. Vous pouvez ou non vouloir cela.

Si cela vous convient, vous pouvez spécifier my-secret2.pemvia ssh_configen ajoutant l'extrait suivant avant le Host 172.30.*bloc que vous avez déjà:

# Special hosts, new identity file.
Host 172.30.10.*
  IdentityFile           /home/ehud/.ssh/my-secret2.pem

man 5 ssh_config dit:

Pour chaque paramètre, la première valeur obtenue sera utilisée. Les fichiers de configuration contiennent des sections séparées par des Hostspécifications. Cette section est uniquement appliquée aux hôtes qui correspondent à l'un des modèles donnés dans la spécification. Le nom d'hôte correspondant est celui indiqué sur la ligne de commande.

Étant donné que la première valeur obtenue pour chaque paramètre est utilisée, davantage de déclarations spécifiques à l'hôte doivent être fournies au début du fichier, ainsi que des valeurs par défaut générales à la fin.

Pour tout paramètre ne pouvant être spécifié qu'une seule fois, il suffirait de faire correspondre les hôtes spéciaux en premier, puis la totalité de la 172.30.*plage. Ce n'est pas évident, mais "la première valeur obtenue sera utilisée" ne s'applique pas vraiment IdentityFilecar vous pouvez spécifier plusieurs fichiers. Pour que vos hôtes spéciaux n'utilisent pas le my-secret1.pemfichier, vous devez avoir des connaissances supplémentaires sur l'utilisation d'un point d'exclamation ( !).

Exemple d'extrait de ssh_config:

# Special hosts, new identity file.
Host 172.30.10.*
  IdentityFile           /home/ehud/.ssh/my-secret2.pem

# Non-special hosts, old identity file.
Host 172.30.* !172.30.10.*
  IdentityFile           /home/ehud/.ssh/my-secret1.pem

# Special and non-special hosts, like in your old config.
# Note there is no IdentityFile line here anymore.
# If there was, it would apply to special and non-special
# hosts, despite some previous IdentityFile line alrady loaded.
Host 172.30.*
  ControlMaster auto
  ControlPath ~/.ssh/cm_socket/%r@%h:%p

  ServerAliveInterval    60
  TCPKeepAlive           yes
  ProxyCommand           ssh -i /home/ehud/.ssh/my-secret1.pem -q -A [email protected] nc %h %p
  ControlMaster          auto
  ControlPath            ~/.ssh/mux-%r@%h:%p
  ControlPersist         8h
  User                   ubuntu

Maintenant, si vous par exemple ssh -v 172.30.10.22(hôte spécial), vous verrez quelque chose comme:

debug1: /etc/ssh/ssh_config line X: Applying options for 172.30.10.*
debug1: /etc/ssh/ssh_config line Y: Skipping Host block because of negated match for 172.30.10.*
debug1: /etc/ssh/ssh_config line Z: Applying options for 172.30.*

et ssh -v 172.30.99.33(hôte non spécial) imprimera:

debug1: /etc/ssh/ssh_config line Y: Applying options for 172.30.*
debug1: /etc/ssh/ssh_config line Z: Applying options for 172.30.*

De toute façon, un seul .pemfichier sera utilisé.

Il y a aussi une -Foption pour ssh. De man 1 ssh:

-F configfile
Spécifie un autre fichier de configuration par utilisateur. Si un fichier de configuration est indiqué sur la ligne de commande, le fichier de configuration système ( /etc/ssh/ssh_config) sera ignoré. La valeur par défaut pour le fichier de configuration par utilisateur est ~/.ssh/config.

De cette façon, vous pouvez charger une configuration complètement différente à la main.

Kamil Maciorowski
la source