Как ускорить мой слишком медленный вход в SSH?


42

Бег ssh user@hostnameзанимает ~ 30 с. Вот сценарий:

  • это виртуальная машина в локальной сети
  • Windows и Mac машины получают мгновенный вход
  • я использую Debian, и я мог воспроизвести с машиной Ubuntu
  • кто-то, использующий Ubuntu, говорит, что вход в мою машину (локальная сеть) также происходит мгновенно
  • использование IP-адреса хоста занимает примерно половину времени (~ 15 с)

[ обновить ]

Используя ssh -vvv user@hostname, вот где это ждет больше всего:

debug3: authmethod_lookup gssapi-with-mic
debug3: remaining preferred: publickey,keyboard-interactive,password
debug3: authmethod_is_enabled gssapi-with-mic
debug1: Next authentication method: gssapi-with-mic

И тогда это ждет немного здесь:

debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found

debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found

1
Вы используете пароль или аутентификацию pubkey? и если пароль, файл id_dsaили id_rsaфайл в вашем ~/.ssh? может быть, ваша установка ssh сначала пытается
выполнить

@ Tobias Я использую пароль, и у меня нет "~/.ssh"файла. Это каталог, и в нем есть только "known_hosts"файл.
tshepang

5
Похоже, у вас есть тайм-аут DNS 15 с. Возможно, сервер выполняет поиск DNS; если вы можете, убедитесь , что у вас есть UseDNS noв sshd_configна сервере. В любом случае, запустите, ssh -vvv user@hostnameчтобы увидеть, где висит логин.
Жиль "ТАК - перестань быть злым"

@ Gil Спасибо. Я обновил вопрос. Я попрошу администратора проверить эту настройку UseDNS .
tshepang

3
@Tshepang: О, вы используете аутентификацию Kerberos (GSSAPI). Я не знаком с этим. Если он неправильно настроен, возможно, это вызывает задержку. Это то, что вы можете спросить у администратора. DNS может быть красная сельдь; это самая распространенная причина в дикой природе, но, возможно, ваша проблема в другом.
Жиль "ТАК - перестань быть злым"

Ответы:


32

Отредактируйте ваш " / etc / ssh / ssh_config " и закомментируйте эти строки:

GSSAPIAuthentication yes
GSSAPIDelegateCredentials no

3
+1 Хороший ответ! (1) Это нормальная скорость для подключения по протоколу ssh, чтобы время мигания курсора было 7 раз? (2) Почему это работает, комментируя GSSAPIAuthentication yesи GSSAPIDelegateCredentials no? @Tshepang
Тим

@Tim (1) это слишком долго ... в зависимости от соединения, я не ожидаю, что это займет более 2 секунд; (2) Я понятия не имею, просто это работает
tshepang

1
Значение по умолчанию для GSSAPIAuthentication в большинстве версий OpenSSH - «нет», но некоторые дистрибутивы устанавливают «да» в файлах sshd_config и ssh_config. Если он вам не нужен / не используется, он замедляет установление соединения / аутентификацию.
Тгарольд

Если используется аутентификация LDAP / AD, не приведет ли отключение GSSAPI к простой привязке, что может привести к отправке паролей по сети в виде открытого текста?
Шеннон

Убедитесь, что все серверы имен все еще существуют в /etc/resolv.conf. Если они этого не делают, уберите их. Это решило мою проблему.
технократ

30

У меня была эта проблема, и я решил ее, отключив Обратное разрешение DNS в SSH.

Так что sshd_configна сервере измените это:

 #UseDNS yes

к этому:

UseDNS no

1
Я сделал изменение (хотя у меня не было закомментированной опции UseDNS ), перезагрузил мой ssh-сервер, и все еще та же проблема.
Чепанг

2
@ Че хм, странно. Единственные проблемы со скоростью, которые у меня когда-либо были с SSH, были из-за этого.
Earlz

1
Я был настроен скептически, когда использую IP-адрес (домашняя локальная сеть), но это решение помогло решить мою проблему. Ради Google, хотя это происходило сразу после этого, задержка не имела ничего общего с сообщением «key: /home/mylogin/.ssh/id_ecdsa ((nil))» (при запуске ssh -vvv).
Скиппи ле Гран Гуру

7

Вы проверили настройки DNS?

Попробуйте настройку mdns offв /etc/host.conf.

Это отключает разрешение MDN и мне очень помогло.

РЕДАКТИРОВАТЬ:

Кажется, Gentoo справляется с этим немного иначе. Чтобы отключить многоадресный поиск DNS, вы должны изменить файл /etc/nsswitch.conf.
Там должно быть что-то вроде:

hosts:          files mdns

Измените это на:

hosts:          files dns

+1 хорошая идея. @Tshepang быстрее ли подключается ssh, когда вы напрямую используете IP-адрес имени хоста?
Тобиас Кинцлер

@tobias занимает вдвое меньше времени
tshepang

Я получаю /etc/host.conf: line 2: bad command mdns off'`, когда я бегу ssh user@hostname.
tshepang

Похоже, это устаревший параметр, так как glibc 2.3.x (2006): forums.gentoo.org/viewtopic-t-476558-highlight-mdns.html . Что вы используете (ОС, глик версия)?
Чепанг

1
Вы говорите, что это займет только половину времени, когда вы используете IP-адрес. Это означает, что у вас есть проблема с разрешением вашего имени (IP => FQDN или FQDN => IP). Поэтому сначала взгляните на конфигурацию DNS, а затем попытайтесь выяснить, есть ли у вас проблемы с ssh или нет.
Кристиан


1

Также проверьте, если nscdустановлен и работает.

Отсутствие DNS-кэша может увеличить время, необходимое для разрешения записи PTR (при условии, что клиент ssh выполняет обратный поиск DNS для IP-адреса сервера)


0

У меня такая же проблема в среде Windows 2008 R2, но «useDNS no» не работает.

Я пытаюсь добавить в файл hosts IP-адрес и хост подключающегося сервера, и он быстрее на 30 сек. Что заставляет меня думать, что разрешение может быть в DNS.

Я пытаюсь добавить DNS-серверы, но это не решает проблему.

У моего сервера есть два DNS суффикса. 1 для корпоративного домена, к которому принадлежит сервер (domain.com), а другой для его внешнего интерфейса, подключенного к частной сети (domain.net).

Порядок суффикса DNS: сначала domain.net, затем domain.com next

Мои SFTP / SSH клиенты находятся в корпоративном домене. Кстати проблемные клиенты из корпоративного домена.

Что работает для меня, так это то, что сначала я делаю domain.com, а затем domain.net

Задержка соединения 2 м30 раньше стала только 3-4 с.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.