1

У меня есть файл .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 :

  1. Если я пытаюсь подключиться к zeus SSH всегда использует порт 22 вместо 54301.
  2. Если я удаляю Port 22 и пытаюсь подключиться к Host без записи Port , SSH использует первый набор значений Port (54301 в этом примере).

После попытки различных комбинаций кажется, что SSH обрабатывает все файлы конфигурации, но принимает только первое значение указанного Port , что является ожидаемым поведением в соответствии с man-страницей:

Для каждого параметра будет использоваться первое полученное значение

Но на странице руководства также говорится, что

Файлы конфигурации содержат разделы, разделенные спецификациями `` Host '', и этот раздел применяется только для хостов, которые соответствуют одному из шаблонов, приведенных в спецификации.

поэтому я подумал, что, не указав значение Port , порт по умолчанию будет меняться только в тех разделах, где на самом деле есть значение Port .

Итак, как я могу настроить записи Host для использования порта 22, кроме случаев, когда указано другое значение?

Спасибо!

2 ответа2

4

Поскольку для каждого параметра используется первое полученное значение, в начале файла должны быть приведены более специфичные для хоста объявления, а в конце общие значения по умолчанию.

Так

Host *
  Port 22

следует перенести до конца.

1

Поместите объявление "Host *" после всех других объявлений хоста, чтобы оно не перекрывало их. Но на самом деле вам вообще не нужно это объявление, так как по умолчанию SSH использует порт 22.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .