Пользовательский порт для клиента SSH в $HOME/.ssh/config не работает

Я использую файл конфигурации для своего клиента OpenSSH вместо того, чтобы определить опции в командной строке при необходимости, образце из моего файла конфигурации:

$ cat ~/.ssh/config

----ВЕРХНИЕ ЧАСТИ, ОТРЕДАКТИРОВАННЫЕ ЗДЕСЬ----

Host hmnw
        Hostname hmnw.mydomain.com 
        User myname
        Port 60022
        IdentityFile ~/.ssh/id_rsa

Когда я пробую к ssh к этому хосту:

$ ssh hmnw

Это не работает.

Но когда я делаю

$ ssh -p 60022 hmnw

Это проходит.

Из любопытства я сделал strace на этом процессе:

$ ssh hmnw&
$ sudo strace -p $!
connect(3, {sa_family=AF_INET, sin_port=htons(22), sin_addr=inet_addr("XX.XX.XX.XX")}, 16

Я понимаю, что это пытается соединиться с портом SSH по умолчанию 22.

Примечание: Измененный мое фактическое имя хоста и IP-адрес выше.

Что я делаю неправильно?

Моя ssh версия

$ ssh -V
OpenSSH_7.2p2 Ubuntu-4ubuntu2.1, OpenSSL 1.0.2g  1 Mar 2016

Добавление этого после предложения @muru

$ ssh -vvvv hmnw                                                            
OpenSSH_7.2p2 Ubuntu-4ubuntu2.1, OpenSSL 1.0.2g  1 Mar 2016
debug1: Reading configuration data /home/myname/.ssh/config
debug1: /home/myname/.ssh/config line 2: Applying options for *
debug1: /home/myname/.ssh/config line 21: Applying options for hmnw
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: resolving "hmnw.mydomain.com" port 22
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to hmnw.mydomain.com [xx.xx.xx.xx] port 22.
2
задан 20 October 2016 в 09:34

2 ответа

Я нашел часть преступника в конфигурации, это - моя ошибка на основе предположения:

Вершина моего ~/.ssh/config Порт файла

### default for all ##
Host *
     ForwardAgent no
     ForwardX11 no
     ForwardX11Trusted yes
     User myname
     Port 2222
     Protocol 2
     ServerAliveInterval 30
     ServerAliveCountMax 120

2222 здесь переопределял Порт 60022, ниже которого принадлежит hmnw.

я удалил Port 2222 от Host *, теперь это работает.

Обновление: Согласно предложению @muru, движущаяся конфигурация по умолчанию сверху донизу config файл позволяет мне использовать пользовательскую запись порта для значения по умолчанию *

, предложение Host * !hmnw @steeldriver также полезно, у меня еще нет варианта использования для него, но я вижу, что это позволило бы мне инвертировать определенные настройки для конкретного хоста, если бы я должен был.

2
ответ дан 2 December 2019 в 03:44

Кажется, что ssh (на человечности 16.04) не не использует ~/.ssh/config по умолчанию, которые противоречат руководству по клиентская конфигурация OpenSSH , говоря, что

Параметры командной строки имеют приоритет по конфигурационным файлам. Определенный для пользователя конфигурационный файл ~/.ssh/config используется затем. Наконец, глобальный/etc/ssh/ssh_config файл используется. Первое полученное значение для каждого параметра конфигурации будет использоваться.

, В то время как следующие два решения все еще работают:

  1. sudo ssh -F ~/.ssh/config the_name_after_Host
  2. помещает строки конфигурации в файл /etc/ssh/ssh_config (в начале файла) вместо ~/.ssh/config
0
ответ дан 2 December 2019 в 03:44

Другие вопросы по тегам:

Похожие вопросы: