Что может означать «Роуминг, запрещенный сервером» ssh-клиента?

25

Мне не удается подключиться к экземпляру сервера SSH, и подробный вывод содержит debug1: Roaming not allowed by server. Возникают следующие предсказуемые и неизбежные проблемы:

  • Роуминг означает доступ к услугам из разных типов сетей. Я не могу понять, что это может означать в контексте подробного вывода sshклиента 6.6.1, работающего на Ubuntu 14.04.
  • Не ясно, является ли это ошибкой или нет, и является ли это причиной провала входа в систему или нет (хотя я не хочу погружаться в сбой соединения здесь; ни одно из выходных сообщений sshне делает BTW -> больше проблем и трения времени - вас предупредили!)
  • Я запросил site:www.openssh.org roamingв Google пустой результат, и на страницах руководства нет этого термина. Это бессмысленно использовать его, даже если он был задокументирован из-за его неоднозначности!

Что может означать это сообщение? Как я могу использовать его для отладки большого набора других весьма неоднозначных, неинтуитивных и бесполезных ошибок и других сообщений SSH?

Карл Рихтер
источник

Ответы:

22

Это не совсем сообщение об ошибке. Это просто отладочное сообщение о том, что сервер не принимает роуминговые соединения.

Роуминг, по-видимому, является экспериментальной функцией, добавленной в OpenSSH в 2009 году или около того. Назначение этой функции - позволить клиенту ssh отключиться от сеанса на сервере, а затем возобновить сеанс из другого места. Смотрите здесь для обсуждения этого вопроса. Погуглив ssh, роуминг, и "Martin Forssén" перевернут другие страницы. Не похоже, что он активно развивается. Я подозреваю, что разработчики SSH никогда не документировали это, потому что это экспериментально и возможно не закончено.

Из проверки исходного кода OpenSSH, есть недокументированный вариант на стороне клиента, UseRoamingкоторый может быть установлен на да или нет. Добавление строки «UseRoaming no» в конфигурацию вашего клиента (обычно в ваш .ssh/configфайл) должно подавлять сообщение отладки.

Для меня не было очевидно, почему HostbasedAuthenticationнастройка на стороне сервера будет контролировать, принимает ли сервер роуминговые соединения или нет.

Обновление: поддержка роуминга клиента, по-видимому, является темой отчета об уязвимости компьютера, CVE-2016-0777 . OpenSSH версии с 5.4 по 7.1p1 уязвимы. Пользователи должны обновить до OpenSSH 7.1p2 или новее. Пользователи, которые не могут выполнить обновление, должны отключить роуминг на клиенте, добавив «UseRoaming no» в свою конфигурацию клиента ssh. Смотрите следующее:

Kenster
источник
7
Ну, теперь рекомендуется установить его на нет. mail-archive.com/misc@openbsd.org/msg144351.html
nikeee
1
@nikeee: ... и это предостерегающая история, чтобы не отправлять "безвредные" нерабочие окурки. (Обратите внимание, что вам нужно установить его noв настройках клиента , а не на сервере)
Piskvor
@Piskvor, но есть довольно много книг по devops / webops, которые пропагандируют это ... неужели они все не правы? Ой.
Флориан Хейгл
лучшее объяснение об этом конфиге в сети.
Нильс Петерсон
4

В журнале изменений из openssh 5.3 на CentOS6 есть примечание:

2009/06/27
     Добавьте клиентскую опцию UseRoaming. Пока ничего не делает, но
     контролировать, пытается ли клиент использовать роуминг, если включен
     сервер. От Мартина Форссена.
Эндрю Давиэль
источник
3

@ ILMostro_7 chmod 600 authorized_keys работал нормально для меня.

В интересах всех, кто прибывает сюда, прибегая к помощи «Роуминг запрещен сервером» и использует клиент Linux (Ubuntu), вы можете исправить это предупреждение, а затем посмотреть:

Agent admitted failure to sign using the key

Лекарство от этого дано на https://help.github.com/articles/error-agent-admitted-failure-to-sign/

    # start the ssh-agent in the background
    $ eval "$(ssh-agent -s)"
    # Agent pid 59566 (displays process id)
    $ ssh-add
    # Enter passphrase for /home/you/.ssh/id_rsa: [tippy tap]
    # Identity added: /home/you/.ssh/id_rsa (/home/you/.ssh/id_rsa)

'#' = комментарий. Вы = ваше имя пользователя. [быстрое нажатие] = хумо [и] г? = нажмите клавишу ввода.

Я надеюсь, что это поможет кому-то так же, как этот Q & A уже помог мне.

MartinRH
источник
2

Это сообщение об ошибке может отображаться, когда на сервере /etc/ssh/sshd_configне HostbasedAuthenticationустановлено yesзначение.

Понятия не имею почему.

Другая проблема может быть:

Проверьте разрешения в каталоге $ USER / .ssh, который должен принадлежать пользователю и быть chmod 700. Файл authorized_keys также должен быть chmod 700 и принадлежать пользователю

Nifle
источник
700? Зачем вам нужно executeнемного на ключевой файл?
ILMostro_7
Откуда цитата? Пожалуйста, добавьте ссылку.
Карл Рихтер
ILMostro_7 не находится в файле, он находится в каталоге, и для того, чтобы пользователь мог создавать файлы в каталоге, необходимо установить флаг выполнения
IceyEC
@IceyEC Ответ предлагает 700 для авторизованных ключей .
mdrozdziel
1
Должно быть chmod 400. Понятия не имею, почему я хотел бы, чтобы этот файл был исполняемым; и доступ на запись тоже нежелателен 99,999% времени. sshdпроверяет, что .sshпапка пользователя не имеет доступа для группы и других, а также для .ssh/authorized_keys. Таким образом, в ответе могут быть использованы завышенные значения, но они неоправданно широки.
Писквор