У меня есть файл .ssh/config настроенный для подключения к различным серверам с 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
Эта конфигурация работала нормально. Однако, поскольку я обновился до Mac OS X, Mountain Lion SSH ведет себя по-разному в отношении определенных значений Port в записях Host :
- Если я пытаюсь подключиться к zeusSSH всегда использует порт 22 вместо 54301.
- Если я удаляю Port 22и пытаюсь подключиться кHostбез записиPort, SSH использует первый набор значенийPort(54301 в этом примере).
После попытки различных комбинаций кажется, что SSH обрабатывает все файлы конфигурации, но принимает только первое значение указанного Port , что является ожидаемым поведением в соответствии с man-страницей:
Для каждого параметра будет использоваться первое полученное значение
Но на странице руководства также говорится, что
Файлы конфигурации содержат разделы, разделенные спецификациями `` Host '', и этот раздел применяется только для хостов, которые соответствуют одному из шаблонов, приведенных в спецификации.
поэтому я подумал, что, не указав значение Port , порт по умолчанию будет меняться только в тех разделах, где на самом деле есть значение Port .
Итак, как я могу настроить записи Host для использования порта 22, кроме случаев, когда указано другое значение?
Спасибо!
