Configure o cliente SSH para usar portas diferentes no Mac OS X

1

Eu tenho um arquivo .ssh/config configurado para conectar-se a diferentes servidores com 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 configuração costumava funcionar bem. No entanto, desde que fiz o upgrade para o Mac OS X, o SSH da Mountain Lion se comporta de maneira diferente em relação a valores específicos de Port em Host entries:

  1. Se eu tentar me conectar ao zeus SSH, sempre use a porta 22, em vez de 54301.
  2. Se eu remover Port 22 e tentar conectar a uma entrada Host sem Port , o SSH usará o primeiro conjunto de valores Port (54301 neste exemplo).

Depois de tentar combinações diferentes, parece que o SSH processa todos os arquivos de configuração, mas recebe apenas o primeiro valor de Port especificado, que é um comportamento esperado de acordo com a página man:

For each parameter, the first obtained value will be used

Mas a página man também declara que

The configuration files contain sections separated by ''Host'' specifications, and that section is only applied for hosts that match one of the patterns given in the specification.

Por isso, pensei que, ao não especificar nenhum valor Port , a porta padrão mudaria somente nas seções em que, na verdade, tem um valor Port .

Então, como posso configurar Host entradas para usar a porta 22, exceto onde outro valor é especificado?

Obrigado!

    
por elitalon 05.09.2012 / 20:16

2 respostas

4

Since the first obtained value for each parameter is used, more host-specific declarations should be given near the beginning of the file, and general defaults at the end.

Então

Host *
  Port 22

deve ser movido para o final.

    
por 05.09.2012 / 20:45
1

Coloque a declaração "Host *" após todas as outras declarações de host para evitar que elas sejam substituídas. Mas realmente você não deve precisar dessa declaração, pois o padrão é o SSH usar a porta 22.

    
por 05.09.2012 / 20:46