
en el archivo .ssh/config
El escenario es que ahora tengo dos IP públicas (dinámicas), una está conectada a AWS y la otra a Rackspace.
Ambos requieren diferentes claves pem para conectarse. Pero quiero usar el archivo de configuración ssh para ahorrar tiempo.
Host <ip1>
User root
Port 22
HostName %h
IdentityFile ~/.ssh/aws.pem
Host <ip2>
User root
Port 22
HostName %h
IdentityFile ~/.ssh/rackspace.pem
A partir de esta configuración, no puedo distinguir qué archivo pem utilizar. Quiero utilizar el Host como parte del parámetro para especificar a qué servidor conectarme, por ejemplo, ssh aws-ip1 ssh rack-ip2
entonces el archivo de configuración puede distinguir qué archivo pem usar
Alguien sabe cómo hacer esto?
Respuesta1
Ok... Esta pregunta es muy antigua. Sin embargo, puedo pensar en una manera que ayudará en este tipo de escenarios. Usando parámetros comodín (*) y %h aquí.
Supongamos que la IP de Amazon es 10.10.20.* y la IP de Rackspace es 20.20.10.*. La siguiente configuración ayudará:
Host 10.10.20.*
Hostname %h
User root
IdentityFile ~/.ssh/aws.pem
Host 20.20.10.*
Hostname %h
User root
IdentityFile ~/.ssh/rackspace.pem
Y luego llamar, digamos, ssh 10.10.20.5
llamará a algo como , que es lo que podría ser necesario.ssh -i ~/.ssh/aws.pem [email protected]
Respuesta2
La parte 'Host' es una especie de 'atajo' que puedes usar:
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
y luego simplemente usas ssh aws-ip1
o ssh rack-ip2
...
Para citar de 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.
Respuesta3
Otra opción es utilizar alias de shell de la vieja escuela:
alias ssh_rack="ssh -i .ssh/rackspace.pem"
alias ssh_aws="ssh -i .ssh/aws.pem"
y luego usarlos en lugar de ssh
.