Configure el cliente SSH para usar diferentes puertos en Mac OS X

1

Tengo un .ssh/configarchivo configurado para conectarse a diferentes servidores con SSH:

###
# Identity files
###
IdentityFile ~/.ssh/id_dsa_home
IdentityFile ~/.ssh/id_dsa_github
IdentityFile ~/.ssh/id_rsa_bitbucket

###
# Global options
###
PasswordAuthentication no
PubkeyAuthentication yes

Host *
  Port 22

Host icarus
  User elitalon
  HostName 192.168.1.1
  Port 54301

Host zeus
  User elitalon
  HostName 192.168.2.1
  Port 54302

Host github
  User git
  HostName github.com

Host bitbucket
  User git
  HostName bitbucket.org

Esta configuración solía funcionar bien. Sin embargo, desde que actualicé a Mac OS X Mountain Lion SSH se comporta de manera diferente con respecto a Portvalores específicos en las Hostentradas:

  1. Si intento conectarme a zeusSSH siempre uso el puerto 22, en lugar de 54301.
  2. Si elimino Port 22e intento conectarme a a Hostsin una Portentrada, SSH usa el primer Portconjunto de valores (54301 en este ejemplo).

Después de probar diferentes combinaciones, parece que SSH procesa todos los archivos de configuración, pero solo toma el primer valor Portespecificado, que es un comportamiento esperado según la página de manual:

Para cada parámetro, se usará el primer valor obtenido

Pero la página del manual también dice que

Los archivos de configuración contienen secciones separadas por especificaciones de `` Host '', y esa sección solo se aplica a hosts que coinciden con uno de los patrones dados en la especificación.

así que pensé que al no especificar ningún Portvalor, el puerto predeterminado cambiaría solo en aquellas secciones donde realmente tiene un Portvalor.

Entonces, ¿cómo puedo configurar Hostentradas para usar el puerto 22, excepto donde se especifica otro valor?

¡Gracias!

elitalon
fuente

Respuestas:

4

Dado que se utiliza el primer valor obtenido para cada parámetro, se deben proporcionar más declaraciones específicas del host cerca del comienzo del archivo y valores predeterminados generales al final.

Entonces

Host *
  Port 22

debe ser movido hasta el final.

RedGrittyBrick
fuente
1

Coloque la declaración "Host *" después de todas las demás declaraciones de host para evitar que las anule. Pero realmente no debería necesitar esta declaración, ya que el valor predeterminado es que SSH use el puerto 22.

Kyle Jones
fuente