
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.5
wie 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-ip1
oder 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
.