Stellen Sie über zwei verschiedene Gateways mit unterschiedlichen Serverbenutzern eine Verbindung (SSH) zum selben Server her.

Stellen Sie über zwei verschiedene Gateways mit unterschiedlichen Serverbenutzern eine Verbindung (SSH) zum selben Server her.

Ich möchte erreichen, dass ich mich target.servervon meinem lokalen Rechner aus mit einigen verbinden kann, ohne Passwörter eingeben zu müssen, und zwar mit den folgenden Befehlen:

ssh [email protected]
ssh [email protected]

Jeder der oben genannten Benutzer akzeptiert nur Verbindungen von einer bestimmten IP-Adresse, die jeweils gateway1.exampleund entspricht gateway2.example. Ich habe alle erforderlichen SSH-Schlüssel rechts hinzugefügt authorized_keys, damit ich darauf verzichten kann, Passwörter einzugeben:

Jetzt muss ich wohl noch die richtigen Dinge in mein lokales packen ~/.ssh/config. Wenn ich hinzufüge:

Host target.server
    ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'

Dann funktioniert es. Aber ich weiß nicht, wie ich beides hinbekomme und es funktioniert. Ich habe Folgendes versucht:ssh [email protected]user1user2

Host target.server
    User user1
    ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'
Host target.server
    User user2
    ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'

oder

Host target.server
    User user1
        ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'
    User user2
        ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'

aber es hat trotzdem nicht geklappt user2: alles ging durch gateway1und nicht gateway2.

Vielen Dank im Voraus für Ihre Hilfe!

Aktualisieren:Ich konnte die folgenden Befehle zum Laufen bringen:

ssh user1
ssh user2

(ohne @target.server), mit der folgenden Konfiguration:

Host user1
    HostName target.server
    User user1
    ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'
Host user2
    HostName target.server
    User user2
    ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'

Dies ist, was ich verwenden werde, aber ich bin immer noch gespannt auf eine Lösung für die beiden Befehle am Anfang dieser Frage.

Antwort1

Wie Sie herausgefunden haben, sind Aliase eine gute Lösung. Wenn Sie sie nicht verwenden möchten, Matchist die Direktive möglicherweise eine weitere gültige Option.

Host target.server
    Match User user1
        ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'
    Match User user2
        ProxyCommand ssh -o 'ForwardAgent yes' [email protected] 'ssh-add && nc %h %p'

Aus der ssh_configManpage:

Übereinstimmen Beschränkt die folgenden Deklarationen (bis zur nächstenGastgeberoderÜbereinstimmenSchlüsselwort) nur dann zu verwenden, wenn die Bedingungen nach demÜbereinstimmenSchlüsselwort erfüllt sind.

verwandte Informationen