Kann ich in der SSH-Konfigurationsdatei „Host“ als Parameter verwenden? Wenn nicht, wie kann ich dafür sorgen, dass die SSH-Konfigurationsdatei Parameter akzeptiert?

Kann ich in der SSH-Konfigurationsdatei „Host“ als Parameter verwenden? Wenn nicht, wie kann ich dafür sorgen, dass die SSH-Konfigurationsdatei Parameter akzeptiert?

in der .ssh/config-Datei

Das Szenario ist, dass ich jetzt zwei öffentliche IPs habe (dynamisch), eine ist mit AWS verbunden und eine mit Rackspace

Beide erfordern unterschiedliche PEM-Schlüssel zum Verbinden. Aber ich möchte die SSH-Konfigurationsdatei verwenden, um Zeit zu sparen

Host <ip1> 
User root
Port 22
HostName %h
IdentityFile ~/.ssh/aws.pem

Host <ip2> 
User root
Port 22
HostName %h
IdentityFile ~/.ssh/rackspace.pem

Anhand dieser Einstellung kann ich nicht erkennen, welche PEM-Datei verwendet werden soll. Ich möchte den Host als Teil des Parameters verwenden, um anzugeben, mit welchem ​​Server eine Verbindung hergestellt werden soll, z. B. ssh aws-ip1 ssh rack-ip2

dann kann die Konfigurationsdatei unterscheiden, welche PEM-Datei verwendet werden soll

Weiß jemand, wie das geht?

Antwort1

Ok... Diese Frage ist sehr alt. Aber mir fällt eine Möglichkeit ein, die in solchen Szenarien hilft. Verwenden Sie hier Platzhalter(*) und %h-Parameter.

Nehmen wir an, Amazons IP ist 10.10.20.* und Rackspaces IP ist 20.20.10.*. Die folgende Konfiguration hilft:

Host 10.10.20.*
    Hostname %h
    User root
    IdentityFile ~/.ssh/aws.pem

Host 20.20.10.*
    Hostname %h
    User root
    IdentityFile ~/.ssh/rackspace.pem

Und dann ruft beispielsweise ein Aufruf ssh 10.10.20.5wie auf , was möglicherweise gerade erforderlich ist.ssh -i ~/.ssh/aws.pem [email protected]

Antwort2

Der Teil „Host“ ist eine Art „Abkürzung“, die Sie verwenden können:

Host aws-ip1
    HostName ip-or-name-to-ip1
    IdentityFile ~/.ssh/aws.pem

Host rack-ip2
    HostName ip-or-name-to-ip2
    IdentityFile ~/.ssh/rackspace.pem

und dann benutzt du einfach ssh aws-ip1oder ssh rack-ip2...

Um zu zitieren man ssh-config:

Host    Restricts the following declarations (up to the next Host key-
        word) to be only for those hosts that match one of the patterns
        given after the keyword.

Antwort3

Eine andere Möglichkeit besteht darin, einfache Shell-Aliase der alten Schule zu verwenden:

 alias ssh_rack="ssh -i .ssh/rackspace.pem"
 alias ssh_aws="ssh -i .ssh/aws.pem"

und verwenden Sie sie dann anstelle von ssh.

verwandte Informationen