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

SSH по ключу невероятно медленный

SSH-соединение с ключом с моей машины внезапно стало невероятно медленным (~ 10 секунд!). Насколько я понимаю, это не проблема сервера или DNS.

Проблема возникла внезапно после простого apt-get install kubuntu-desktop и некоторые мелочи, связанные с KDE, на моем Ubuntu 15.04 x86_64.

Бег ssh -vv ... показывает мне, что он ждет целую вечность (большую часть ~ 10 секунд ...) в последней строке из этого:

OpenSSH_6.7p1 Ubuntu-5ubuntu1, OpenSSL 1.0.1f 6 Jan 2014 debug1: Reading configuration data /home/neuronq/.ssh/config debug1: /home/neuronq/.ssh/config line 1: Applying options for XXX.com debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: Applying options for *

...и мой /etc/ssh/ssh_config содержит это (я не вставлял закомментированные строки):

Host *
    SendEnv LANG LC_*
    HashKnownHosts yes
    GSSAPIAuthentication no
    GSSAPIDelegateCredentials no

Есть ли способ, которым установка Kubuntu на рабочий стол может внезапно привести к этому замедлению (какая-то странная вещь с хранилищем ключей / кошельком)? (Кроме того, в KDE я вообще не мог заставить работать ssh-логин по ключу, за исключением терминала, вручную выполняя ssh-add заранее и введя свою ключевую парольную фразу, но с тех пор я полностью отказался от KDE и вернулся к Unity, поэтому меня это больше не волнует ... но это может быть связано)

У вас такие же проблемы с аутентификацией по паролю, или это действительно связано с аутентификацией по ключу?

Ваш клиент может обеспечить правильное разрешение DNS, но именно ваш сервер в любом случае попытается выполнить обратный поиск с вашего IP-адреса; это может объяснить задержку, как говорит @kasperd. Но по опыту это не превышает нескольких секунд.

Удалось ли SSH наконец пройти аутентификацию? Если так, то это действительно похоже на проблему с DNS. Попробуйте, если ваша конфигурация / администратор разрешает, добавьте свой IP / имя хоста в файл / etc / hosts. Это позволит обойти разрешение DNS на стороне сервера. Если вы не настроите свой DNS для обеспечения правильного обратного просмотра на стороне сервера для клиента, useDNS no , как говорит @kasperd, должен быть помещен на /etc/ssh/sshd_config сервера.

Если ваш администратор этого не сделает, вы больше ничего не можете сделать.

РЕДАКТИРОВАТЬ: KDE / Unity или какой-либо менеджер рабочего стола не могут привести к этому замедлению. Я был бы удивительно удивлен, что это так. Однако то, что вам нужно предоставить ssh-add пользоваться своими ключами интересно. Эта команда используется для того, чтобы ваш агент аутентификации запомнил парольные фразы, которые вы указали для своих ключей. Чтобы указать ключ, который будет использоваться, либо сделайте это из командной строки, либо в вашем ~/.ssh/config файл:

# in your command line:
ssh -i /path/to/your/private/key user@host

# or in your /home/$user/.ssh/config file:
# (on command line later, simply use ssh user@host or ssh host if
# user locally and remotely are the same
Host $myhost
    IdentityFile /path/to/your/private/key
    IdentitiesOnly yes 

Для меня фактическим решением было добавление AddressFamily inet на моем локальном хосте либо ~/.ssh/config для соответствующего хоста или /etc/ssh/ssh_config для Host *.

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