Почему приглашение «пароль» происходит вечно, когда я захожу по SSH на свой сервер Ubuntu 9.05?

27

Ответ: На самом деле он выполнял обратное DNS-разрешение. Основываясь на предложениях, приведенных ниже, и этой статье , я добавил «UseDNS no» в свой sshd_config, перезагрузил ssh, и теперь сразу появляется запрос пароля.

Когда я подключаюсь по SSH к моему серверу, мне выдается стандартное приглашение «login as:», а затем приглашение «user @ host's password:». По какой-то причине второй показ всегда занимает некоторое время. Мой сервер не загружен и обычно выполняет команды довольно быстро.

Теперь мы говорим всего 10 секунд или около того между тем временем, когда я нажимаю Enter для имени пользователя, и когда появляется второе приглашение, но когда вы делаете это много, это раздражает. Я подозреваю, что Ubuntu ищет мою учетную запись, но у нее <5 учетных записей на всю установку.

Обновление @Josh / var / log / messages содержит этот гем:

Oct 28 16:54:59 Athena sudo: pam_sm_authenticate: Called
Oct 28 16:54:59 Athena sudo: pam_sm_authenticate: username = [msmith]
Oct 28 16:54:59 Athena sudo: Warning: Using default salt value (undefined in ~/.ecryptfsrc)
Oct 28 16:55:01 Athena sudo: Passphrase key already in keyring; rc = [1]
Oct 28 16:55:02 Athena sudo: Passphrase key already in keyring; rc = [1]
Oct 28 16:55:02 Athena sudo: There is already a key in the user session keyring for the given passphrase.

Где msmith - мое имя пользователя. Что все это значит?

rcampbell
источник
Вы знаете (или хотите узнать), как использовать анализаторы пакетов, такие как Wireshark или tcpdump? Это может сказать вам, действительно ли сервер использует все это время сам или общается с клиентом.
Арджан

Ответы:

17

Возможно ли, что это делает обратный поиск DNS на вашем IP? Вы можете проверить результаты онлайн, если клиент использует публичный IP-адрес, или использовать что-то вроде следующего с вашего сервера:

dig -x CLIENT_IP_ADDRESS

Есть ли что-нибудь /var/log/messages?

мистифицировать
источник
У меня есть предупреждение в журнале: Предупреждение: используется значение соли по умолчанию (не определено в ~ / .ecryptfsrc). Я разместил весь раздел на вопрос для вашего анализа.
rcampbell
@ rrc7cz, так что насчет обратного DNS? Ваш IP-адрес разрешает что-то? (Я сомневаюсь, что это поможет, поскольку чаще всего требуется несколько рукопожатий, чтобы решить, следует ли отображать запрос имени пользователя. Быстрый тест с использованием Wireshark на моем Mac показывает, что SSH запускается задолго до того, как запрашивается имя пользователя. Но, может быть, некоторые клиенты спрашивают это имя пользователя, прежде чем пытаться подключиться ...?)
Arjan
3
У меня была проблема с обратным поиском DNS, которая замедляла мои соединения ssh в нескольких установках ... Если вы обнаружите, что это так, закомментируйте строку «UseDNS yes» в / etc / ssh / sshd_config и перезапустите sshd.
Джон Барретт
@john, ты помнишь, замедлилось ли это после ввода имени пользователя?
Арьян
1
«UseDNS no» мне тоже помогло! UpVotes за вопросы и ответы!
Grizly
14

Вероятно, обратное разрешение DNS (сервер пытается получить имя клиента по IP-адресу) требует времени. Можете ли вы проверить, есть ли в / etc / ssh / sshd_config параметр «VerifyReverseMapping yes»? Установите для него «VerifyReverseMapping no» и проверьте, помогает ли.

Редактировать: Кажется, что VerifyReverseMapping устарела, и useDNS - это новая конфигурация в sshd_config .

secureBadshah
источник
Это может быть правдой, но имеет ли смысл тогда, что приглашение имени пользователя показывается сразу, после чего требуется 10 секунд для запроса пароля?
Арьян
Клиент может разрешить имя сервера и отправить запрос, поэтому сразу отображается приглашение пользователя. Но затем сервер пытается получить имя клиента (обратное разрешение DNS). Это может истечь, если входная доза не существует. Параметр «VerifyReverseMapping» в sshd-config контролирует эту проверку.
secureBadshah
1
Это было причиной медлительности в моем случае, так что в некоторых случаях это имеет смысл, по крайней мере. Имейте в виду, что по умолчанию установлено значение yes, так что не просто ищите, если useDNSустановлено :)
Nanne
3

Вы всегда можете войти в систему с именем пользователя, чтобы начать с:

ssh user@server

это имеет какое-либо влияние?

Если вы используете PuTTY, его можно настроить в разделе Соединение -> Данные в качестве имени пользователя для автоматического входа.

Джон Т
источник
1
Хотя это, очевидно, не ускоряет время, необходимое для появления запроса пароля, оно определенно ускоряет весь процесс входа в систему. Спасибо
rcampbell
3

Если у вас нет подходящих доменных имен для всего, просто придумайте и вставьте /etc/hosts. Посмотрите, пойдет ли это быстрее ... не беспокойтесь, .comпросто используйте «Боб, Кэрол, Тед, Алиса» или все, что вы хотите ...

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

DigitalRoss
источник
1

Помните, что клиент также выполнит проверку обратного DNS, что может занять до 30 секунд или больше, если обратное DNS-сопоставление не существует с определенными конфигурациями разрешения.

В одном /etc/ssh/ssh_configили в ~/.ssh/configнаборе, CheckHostIP noчтобы отключить этот поиск на стороне клиента.

Смотрите man 5 ssh_configдля более подробной информации.

tylerl
источник
1

Я нашел альтернативное решение этой проблемы: - http://www.patrickmin.com/linux/tip.php?name=ssh_pause

У меня возникла такая же проблема при входе в систему сборки Linux с помощью Putty под Windows. Добавление IP-адреса моего окна Windows в / etc / hosts на машине linux решило проблему.

Роб Белчам
источник
3
Добро пожаловать в Super User - мы обычно предпочитаем, чтобы вы включали детали, а не только ссылки. Не могли бы вы отредактировать свой ответ, чтобы добавить больше информации по ссылке?
Саймон Шихан
1

Просто для записи, я столкнулся с той же проблемой, когда ssh быстро шел из дома на мой домашний сервер (главным образом используя его для git), но на работе потребовалось бы около 10-20 секунд, чтобы получить запрос пароля.

Мне пришлось выключить UseDNS noи перезапустить sshd sudo systemctl restart sshd.service. Тогда это работает из всех мест.

Я знаю, что на вопрос дан ответ и он принят, но я хотел добавить информацию, так как мне пришлось «активно» установить ее на « нет» , чтобы заставить ее перестать использовать dns.

qrikko
источник
0

Пожалуйста, проверьте, работает ли nslcd (демон LDAP):

ps -ef | grep nslcd

Это может вызвать эту проблему.

Если он работает, остановите его и удалите из списка служб

service nslcd stop
chkconfig nslcd off
Ану В Дас
источник