Назад | Перейти на главную страницу

Долгая задержка в SSH. Как исправить проблему с resolv.conf

У меня есть сервер Ubuntu 9.04. Я столкнулся с большой задержкой при подключении к серверу SSH. Я добавил «UseDNS no» в sshd_conf и закомментировал «GSSAPIAuthentication yes» в ssh_conf, но проблема все еще существует.

Увидев /etc/resolve.conf, похоже, проблема здесь.

Содержание /etc/resolve.conf:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 10.xx.xx.xx
nameserver 10.xx.xxx.xx
search xyz.com

Я где-то читал, что несколько записей о серверах имен здесь могут вызвать проблемы. Я использую VPN-клиент на этом сервере для подключения к сети моей компании, и похоже, что записи автоматически добавляются клиентом vpn.

Как мне исправить эти длинные задержки, не нарушая мой VPN-клиент / соединения. Я не против того, что не могу использовать имена / псевдонимы серверов моей компании при подключении через VPN с моего сервера, но хотел бы исправить длительную задержку SSH при подключении к серверу.

===========================

  1. Да, я имел ввиду / etc / sshd_conf

  2. Я использую IP-адрес для прямого подключения

  3. Я не использую VPN для подключения к моему серверу (где есть задержка). Однако на сервере запущен VPN-клиент для дальнейшего подключения к другой сети. Вход с моего сервера с помощью VPN-клиента достаточно быстрый.

  4. Извините, я не понял AddressFamily, inet и некоторые другие комментарии.

Вот журналы отладки на стороне клиента (с приблизительными задержками):

OpenSSH_5.6p1, OpenSSL 0.9.8o 01 Jun 2010
debug1: Connecting to ......
debug1: Connection established.
debug1: identity file ..... type -1
debug1: identity file ..... type -1
debug1: identity file ..... type -1
debug1: identity file ..... type -1

ТЕПЕРЬ 4 СЕКУНДЫ ПАУЗА

debug1: Remote protocol version 2.0, remote software version OpenSSH_5.1p1 Debian-5ubuntu1
debug1: match: OpenSSH_5.1p1 Debian-5ubuntu1 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.6
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP

ТЕПЕРЬ 15-20 СЕКУНД ПАУЗА

debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY

ТЕПЕРЬ 40-50 секунд ПАУЗА

Затем он проверяет отпечаток пальца и т. Д. И быстро подключается.

sshd_conf

Чтобы быть уверенным, ты действительно имеешь в виду / и т.д. / SSH / sshd_config, а не sshd_conf, верно? Я не думаю, что sshd_conf или sshd.conf являются допустимыми файлами для OpenSSH в Ubuntu, поэтому их редактирование ничего не даст.

Я где-то читал, что несколько записей о серверах имен здесь могут вызвать проблемы.

Несколько серверов имён в /etc/resolv.conf не должны вызывать никаких проблем, хотя если первый сервер имён в списке медленный, это повлияет на вашу систему. Фактически, рекомендуется перечислить избыточные серверы имен в /etc/resolv.conf на случай, если один из серверов имен выйдет из строя.

Прежде чем копать слишком глубоко, попробуйте определить, на стороне клиента или на стороне сервера.

На стороне клиента включите подробный режим SSH. Это сообщит вам о ходе подключения клиента к серверу. Если соединение от клиента к серверу медленное, вы можете увидеть задержку перед строками вроде «debug1: соединение установлено». или «debug1: Сервер принимает ключ: pkalg ssh-dss blen 435».

На стороне сервера следите за журналами SSH в отдельном окне и смотрите журналы. Возможно, вы захотите увеличить регистрацию до "VERBOSE".


Обновить:

Не используйте sshd_conf. Добавьте следующее в / etc / ssh / sshd_config, перезапустите SSH и сообщите нам, что произойдет.

UseDNS no

Меняйте одну вещь за раз. Если UseDNS не работает, попробуйте «GSSAPIAuthentication no».

Вы должны иметь возможность создать свой собственный файл конфигурации уровня пользователя в ~ / .ssh / config.

Отсюда вы можете сопоставить хост с числовым IP-адресом, и он должен полностью обойти поиск DNS. Например, вы хотите использовать ssh для "glitch.somewhere.net", в вашем конфигурационном файле сделайте что-то вроде:

Host glitch

  HostName 192.168.0.1
  User JP19

Вы можете вставить здесь массу параметров, как описано на странице руководства ssh_config (man ssh_config). Ключевым моментом здесь является то, что «HostName» фактически установлен на числовой IP, а не на истинное имя хоста. По сути, вы настраиваете несколько ярлыков. Таким образом, вы можете использовать ssh для glitch1, glitch2, goog, ...

Одна из потенциальных проблем - убедиться, что разрешения установлены правильно, чтобы ssh не волновался. Кроме того, я бы рекомендовал запустить ssh в подробном режиме (ssh -vvv), чтобы убедиться, что он завис там, где вы думаете, но я подозреваю, что вы на правильном пути.

Первые вопросы: подключаетесь ли вы к серверам через IP-адреса или через доменные имена?

Второй вопрос: вы можете подключаться к серверам извне или только через VPN?

Вероятной причиной задержки является скорость VPN и соединения, не обязательно результат SSH-соединения.

Не могли бы вы попробовать AddressFamily inet? Он отключает ipv6, который вызывает ошибку в некоторых старых системах (это в FAQ по openssh).

Возможно, немного глупо, но перезапустили ли вы сервер ssh после внесения изменений?

Проблема

У меня была аналогичная проблема при входе на серверы CentOS / Fedora с моего ноутбука Fedora. При подключении из внешней сети процесс был быстрым, с задержкой в ​​две, может быть, три секунды до появления запроса пароля. Однако при подключении из внутренней сети до запроса пароля потребуется 10-20 секунд.

Решение:

отредактировать ~ / .ssh / config

Host 192.168.0... (your target ip)
GSSAPIAuthentication no
PasswordAuthentication yes
ChallengeResponseAuthentication no
ForwardX11 yes

Убедитесь, что разрешения ~ / .ssh / config доступны только для чтения для группы / других, запись только для пользователя. (chmod до 644).

Задержка журнала при использовании SSH также может быть вызвана заблокированными процессами и / или неправильной конфигурацией cron-jobs, поэтому проверьте их также (например, crontab -l)