En el archivo de configuración ssh, ¿puedo usar "Host" como parámetro? Si no, ¿cómo puedo hacer que el archivo de configuración ssh acepte el parámetro?

En el archivo de configuración ssh, ¿puedo usar "Host" como parámetro? Si no, ¿cómo puedo hacer que el archivo de configuración ssh acepte el parámetro?

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.5llamará 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-ip1o 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.

información relacionada