SSH-Konfigurationsdatei - Mehrere Benutzer für dieselbe Hostgruppe

0

Derzeit habe ich die folgende ssh-Konfigurationsdatei:

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

Jetzt habe ich andere Computer im selben Subnetz (172.30. *), Aber sie haben eine andere geheime PEM-Datei. Ich möchte dieselbe Konfiguration mit einer anderen geheimen PEM-Datei hinzufügen und ssh mit einem Flag aufrufen, das mich zur richtigen geheimen Datei umleitet.

Ist es möglich??

Vielen Dank

Ehud Lev
quelle
Der Titel sagt, multiple usersals ob Sie etwas mit dem UserParameter machen wollten ; aber der Körper Ihrer Frage schlägt vor, dass es ungefähr ist IdentityFile. Ich hoffe ich habe dich richtig verstanden und meine Antwort ist nützlich.
Kamil Maciorowski

Antworten:

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

Jede der oben genannten Befehle lädt my-secret2.pemDatei zuerst, aber da können Sie mehrere Identitätsdateien angeben (siehe man 1 ssh, -iOption), wird die Datei my-secret1.pemangegeben in Ihrem ssh_configWillen möglicherweise auch versucht werden. Sie können oder können dies nicht wollen.

Wenn Sie damit einverstanden sind, können Sie my-secret2.pemvia angeben, ssh_configindem Sie vor dem bereits vorhandenen Host 172.30.*Block das folgende Snippet hinzufügen :

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

man 5 ssh_config sagt:

Für jeden Parameter wird der erste erhaltene Wert verwendet. Die Konfigurationsdateien enthalten durch HostSpezifikationen getrennte Abschnitte. Dieser Abschnitt wird nur für Hosts angewendet, die einem der in der Spezifikation angegebenen Muster entsprechen. Der übereinstimmende Hostname ist der in der Befehlszeile angegebene.

Da der erste ermittelte Wert für jeden Parameter verwendet wird, sollten am Anfang der Datei weitere hostspezifische Deklarationen und am Ende allgemeine Standardwerte angegeben werden.

Für jeden Parameter, der nur einmal angegeben werden kann, ist es ausreichend, zuerst bestimmte Hosts und später den gesamten 172.30.*Bereich zuzuordnen. Es ist nicht offensichtlich, aber "der erste erhaltene Wert wird verwendet" trifft nicht wirklich zu, IdentityFileda Sie mehrere Dateien angeben können. Damit Ihre speziellen Hosts die Datei nicht verwenden my-secret1.pem, benötigen Sie zusätzliche Kenntnisse über die Verwendung von Ausrufezeichen ( !).

Beispiel-Snippet von 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

Nun, wenn Sie zB ssh -v 172.30.10.22(spezieller Gastgeber), sehen Sie etwas wie:

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.*

und ssh -v 172.30.99.33(nicht spezieller Host) drucken:

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

So oder so wird nur eine .pemDatei verwendet.

Es gibt auch eine -FOption für ssh. Von man 1 ssh:

-F configfile
Gibt eine alternative Konfigurationsdatei pro Benutzer an. Wenn in der Befehlszeile eine Konfigurationsdatei angegeben ist, wird die systemweite Konfigurationsdatei ( /etc/ssh/ssh_config) ignoriert. Die Standardeinstellung für die benutzerspezifische Konfigurationsdatei lautet ~/.ssh/config.

Auf diese Weise können Sie eine völlig andere Konfiguration von Hand laden.

Kamil Maciorowski
quelle