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 ubuntu@some.public.ip 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.
multiple userscomme si vous vouliez faire quelque chose avec leUserparamètre; mais le corps de votre question suggère qu'il en soit ainsiIdentityFile. J'espère vous avoir bien compris et ma réponse est utile.