Я вижу задержки в SSH Logins. В частности, есть 2 места, где я вижу диапазон от мгновенных задержек до нескольких секунд.
- Между вводом команды ssh и получением приглашения на вход в систему и
- между вводом ключевой фразы и загрузкой оболочки
Теперь конкретно я смотрю на детали SSH только здесь. Очевидно, что задержка в сети, скорость оборудования и операционных систем, сложные сценарии входа и т. Д. Могут вызвать задержки. Для контекста я использую огромное количество дистрибутивов Linux и некоторых хостов Solaris, использующих в основном Ubuntu, CentOS и MacOS X в качестве моих клиентских систем. Практически все время конфигурация сервера ssh не отличается от настроек по умолчанию ОС.
Какие конфигурации сервера SSH мне могут быть интересны? Есть ли параметры ОС / ядра, которые можно настроить? Трюки с логином? И т.д?
Ответы:
Попробуйте установить
UseDNS
наno
в/etc/sshd_config
или/etc/ssh/sshd_config
.источник
ssh -vvv
)./etc/ssh/sshd_config
! Я добавлял/etc/sshd_config
и не видел никакой разницы вообще !!Когда я работал
ssh -vvv
на сервере с аналогичной низкой производительностью, я увидел зависание:Отредактировав
/etc/ssh/ssh_config
и закомментировав этот метод аутентификации, я восстановил производительность при входе в систему. Вот что у меня/etc/ssh/ssh_config
на сервере:Вы можете установить это глобально на сервере, чтобы он не принимал GSSAPI для аутентификации. Просто добавьте
GSSAPIAuthentication no
к/etc/ssh/sshd_config
на сервере и перезапустить службу.источник
GSSAPIAuthentication no
иUseDNS no
в/etc/ssh/sshd_config
файл.Для меня виновником было разрешение IPv6, истекло время ожидания. (Плохая настройка DNS у моего хост-провайдера, наверное.) Я обнаружил это, выполнив
ssh -v
, что показало, какой шаг завис.Решение заключается в том, чтобы
ssh
с-4
опцией:ssh -4 me@myserver.com
источник
debug2: resolving "thing.net.au" port 22
без ошибок, но это не происходит с -4, указывая, что это проблема DNS IPv6.При использовании systemd вход в систему может зависать при обмене данными по протоколу dbus с logind после некоторых обновлений, после чего вам необходимо перезапустить logind
Видел, что на Debian 8, Arch Linx, и в списке suse
источник
Вы всегда можете начать
ssh
с-v
опции, которая отображает, что делается в данный момент.С предоставленной вами информацией я могу предложить только некоторые конфигурации на стороне клиента:
Поскольку вы пишете, что вводите пароли вручную, я бы посоветовал вам использовать аутентификацию с открытым ключом, если это возможно. Это устраняет вас как узкое место скорости.
Вы также можете отключить переадресацию с помощью X и переадресацию с помощью
-x
аутентификации-a
(по умолчанию они уже могут быть отключены). Особенно отключение X-forwarding может дать вам значительное улучшение скорости, если ваш клиент должен запустить X-сервер дляssh
команды (например, под OS X).Все остальное действительно зависит от того, с какими задержками вы сталкиваетесь, где и когда.
источник
Что касается пункта 2., здесь приведен ответ, который не требует модификации сервера и не требует наличия привилегий root / admin.
Вам нужно отредактировать ваш файл "user ssh_config":
(Примечание: вам придется создать каталог $ HOME / .ssh, если он не существует)
И добавить:
Вы можете сделать это для каждого хоста, если требуется :) пример:
Убедитесь, что IP-адрес соответствует IP вашего сервера. Одним из замечательных преимуществ является то, что теперь ssh обеспечит автозаполнение для этого сервера. Таким образом, вы можете ввести
ssh lin
+,Tab
и он должен автозаполнить доssh linux-srv
.источник
Проверьте
/etc/resolv.conf
на сервере, чтобы убедиться, что DNS-сервер, указанный в этом файле, работает нормально, и удалите все нерабочие DNS.Иногда это очень полезно.
источник
Помимо уже упомянутых проблем с DNS, если вы подключаетесь к серверу со многими монтированными NFS, то может возникнуть задержка между паролем и запросом, так как
quota
команда проверяет ваше использование / квоту на всех файловых системах, не смонтированных сnoquota
. В системах Solaris вы можете увидеть это по умолчанию/etc/profile
и пропустить его, запустивtouch $HOME/.hushlogin
.источник
Отлично работает
Использовать DNS нет не работать с OpenIndiana !!!
Прочитайте "man sshd_config" для всех вариантов
«LookupClientHostnames no», если ваш сервер не может разрешить
источник
Если ни один из приведенных выше ответов не работает и вы сталкиваетесь с проблемами обратного просмотра DNS, вы также можете проверить, установлен ли
nscd
(и работает ли демон кэша службы имен).Если это проблема, то это потому, что у вас нет DNS-кеша, и каждый раз, когда вы запрашиваете имя хоста, которого нет в вашем хост-файле, вы отправляете вопрос на ваш сервер имен вместо того, чтобы искать в своем кеше
Я перепробовал все вышеперечисленные варианты, и единственное, что сработало, это начало
nscd
.Вы также должны проверить порядок разрешения DNS-запросов,
/etc/nsswitch.conf
чтобы сначала использовать файл hosts.источник
Это, вероятно, относится только к Debian / Ubuntu OpenSSH, который включает в себя user-group-modes.patch, написанный одним из сопровождающих пакетов Debian. Этот патч позволяет файлам ~ / .ssh установить бит записи группы (g + w), если есть только один пользователь с таким же значением gid, что и у файла. Функция patch_permissions () патча выполняет эту проверку. Один из этапов проверки состоит в том, чтобы просмотреть каждую запись passwd с помощью getpwent () и сравнить gid записи с gid файла.
В системе с большим количеством записей и / или медленной аутентификацией NIS / LDAP эта проверка будет медленной. nscd не кэширует вызовы getpwent (), поэтому каждая запись passwd будет считываться по сети, если сервер не является локальным. В системе, которую я обнаружил, добавлялось около 4 секунд для каждого вызова ssh или входа в систему.
Исправление заключается в удалении доступного для записи бита для всех файлов в ~ / .ssh
chmod g-w ~/.ssh/*
.источник
Я обнаружил, что перезапуск systemd-logind.service вылечил проблему только на несколько часов. Изменение UsePAM с yes на no в sshd_config привело к быстрому входу в систему, хотя motd больше не отображается. Комментарии о проблемах безопасности?
источник
Чтобы завершить все ответы, показывающие, что разрешения DNS могут замедлить вашу регистрацию ssh, иногда правила брандмауэра отсутствуют. Например, если вы УДАЛИТЕ все пакеты ввода по умолчанию
тогда вам придется принять INPUT для SSH-порта и DNS-запроса
источник
ssh -vvv
Соединение прошло нормально, пока оно не зависло в системе, пытаясь получить терминал в течение по крайней мере 20 секунд:После выполнения
systemctl restart systemd-logind
на сервере у меня снова было мгновенное соединение!Это было на debian8 ! Так что проблема была в systemd!
Примечание: Бастьен Дурел уже дал ответ на этот вопрос, однако в нем отсутствует отладочная информация. Надеюсь, это кому-нибудь пригодится.
источник
session [default=1] pam_lastlog.so nowtmp showfailed
в/etc/pam.d/postlogin
. Видимо, обновление файла lastlog было невероятно медленным на моем VPS-сервере OpenVZ на основе контейнера.Недавно я обнаружил другую причину медленного входа в систему через ssh.
Даже если у вас есть
UseDNS no
в/etc/sshd_config
, SSHD все еще может выполнить обратный поиск в DNS , если/etc/hosts.deny
есть запись , как:Это может произойти, если в вашей системе установлен DenyHosts .
Было бы замечательно, если бы кто-то знал, как заставить DenyHosts избегать такого входа
/etc/hosts.deny
.Ниже приведена ссылка на часто задаваемые вопросы по DenyHosts о том, как удалить записи,
/etc/hosts.deny
см. Раздел Как удалить IP-адрес, заблокированный DenyHosts?источник
Мы можем обнаружить, что предпочтительным методом разрешения имен является не файл хоста, а затем DNS.
Например, это будет обычная конфигурация:
Сначала достигается файл hosts (опция: файлы), а затем DNS (опция: dns), однако мы можем обнаружить, что была добавлена другая система разрешения имен, которая не работает и вызывает медлительность попыток выполнить обратное разрешение.
Если порядок разрешения имен неправильный, вы можете изменить его по адресу:
/etc/nsswitch.conf
Извлечено из: http://www.sysadmit.com/2017/07/linux-ssh-login-lento.html
источник
Я перепробовал все ответы, но ни один из них не сработал. наконец я выясняю свою проблему:
сначала я запускаю,
sudo tail -f /var/log/auth.log
чтобы увидеть журнал SSH, а затем в другом сеансе запуститьssh 172.16.111.166
и заметил, что ожидание напосле поиска я нашел эту строку в / etc / ssd / ssh_config
Я прокомментировал это, и задержка прошла
источник
Примечание: это началось как учебное пособие «Как отлаживать», но в итоге оказалось решением, которое помогло мне на сервере Ubuntu 16.04 LTS.
TLDR : запустите
landscape-sysinfo
и убедитесь, что выполнение этой команды занимает много времени; это распечатка информации о системе при новом входе в систему по SSH. Обратите внимание, что эта команда доступна не на всех системах,landscape-common
пакет устанавливает ее. («Но подождите, есть еще ...»)Запустите второй ssh-сервер на другом порту на машине, на которой возникла проблема, сделайте это в режиме отладки, который не заставит его работать и выведет отладочные сообщения:
подключиться к этому серверу с другого компьютера в подробном режиме:
Мой клиент выводит следующие строки прямо перед началом сна:
Поиск в Google не очень полезен, но журналы сервера лучше:
Я заметил, что когда я перехожу
UsePAM yes
наUsePAM no
то, эта проблема решена.Не относится ни к
UseDNS
каким другим настройкам,UsePAM
влияет только на эту проблему в моей системе.Я понятия не имею , почему, и я также не выходя
UsePAM
наno
, потому что я не знаю , какие побочные эффекты, но это позволяет мне продолжать расследование.Поэтому, пожалуйста, не рассматривайте это как ответ, а как первый шаг, чтобы начать выяснять, в чем дело.
Поэтому я продолжил расследование и побежал
sshd
сstrace
(sudo strace /usr/sbin/sshd -ddd -p 44321
). Это привело к следующему:Строка
/etc/update-motd.d
заставила меня заподозрить, по-видимому, процесс ждет результата от материала, который находится в/etc/update-motd.d
Поэтому я
cd
попробовал/etc/update-motd.d
и запустилsudo chmod -x *
PAM, чтобы запретить PAM запускать все файлы, которые генерируют эту динамикуMessage Of The Day
, включая загрузку системы и необходимость обновления пакетов, и это решило проблему.Это сервер, основанный на «энергосберегающем» процессоре N3150, который имеет много работы 24/7, поэтому я думаю, что собирать все эти motd-данные было слишком много для него.
Я могу начать выборочно включать сценарии в этой папке, чтобы увидеть, какие из них менее вредны, но, в частности, вызов
landscape-sysinfo
очень медленный и50-landscape-sysinfo
вызывает эту команду. Я думаю, что именно это вызывает наибольшую задержку.После повторного включения большинства файлов я пришел к выводу, что это
50-landscape-sysinfo
и99-esm
стало причиной моих неприятностей.50-landscape-sysinfo
Выполнение заняло около 5 секунд и99-esm
около 3 секунд. Все остальные файлы около 2 секунд в целом.Ни
50-landscape-sysinfo
и99-esm
не являются решающими.50-landscape-sysinfo
распечатывает интересную системную статистику (а также если у вас мало места!) и99-esm
печатает сообщения, связанные сUbuntu Extended Security Maintenance
Наконец, вы можете создать скрипт
echo '/usr/bin/landscape-sysinfo' > info.sh && chmod +x info.sh
и получить эту распечатку по запросу.источник
Этот поток уже предоставляет кучу решений, но мой здесь не приводится =). Так и здесь. Моя проблема (заняло около 1 минуты для входа по ssh в мой raspberry pi) была связана с повреждением файла .bash_history. Поскольку файл читается при входе в систему, это вызывало задержку входа в систему. Как только я удалил файл, время входа в систему вернулось к нормальному, как мгновенное.
Надеюсь, что это поможет другим людям.
источник
Мне нужен был GSSAPI, и я не хотел отключать обратный поиск DNS. Это просто не показалось хорошей идеей, поэтому я заглянул на главную страницу для resolv.conf. Оказывается, что межсетевой экран между мной и серверами, с которыми я работал по SSH, мешал DNS-запросам, потому что они были не в той форме, которую ожидал межсетевой экран. В конце концов, все, что мне нужно было сделать, это добавить эту строку в resolv.conf на серверах, с которыми я работал в SSH:
options single-request-reopen
источник
Примечательно, что обновление пакета bind в CentOS 7 сломалось по имени, теперь в журнале указано, что /etc/named.conf имеет проблему с разрешениями. Он работал хорошо в течение нескольких месяцев с 0640. Теперь он хочет 0644. Это имеет смысл, так как именованный демон принадлежит «именованному» пользователю.
В случае с name down все было медленно, от входа в систему по протоколу ssh до обслуживания страниц с локального веб-сервера, вялых приложений LAMP и т. Д., Наиболее вероятно, потому что каждый запрос будет зависать на мертвом локальном сервере, прежде чем искать настроенный внешний вторичный DNS.
источник
Для меня была проблема в моем локальном
/etc/hosts
файле. Так чтоssh
пробовал два разных IP (один неправильный), который длился вечно.Использование
ssh -v
сделал трюк здесь:источник
/etc/hosts
Сервера?