SSH-подключение с ключом с моей машины внезапно стало невероятно медленным (~10 сек!). Насколько я могу судить, это не проблема сервера или DNS.
Проблема внезапно возникла после простого apt-get install kubuntu-desktop
и незначительного вмешательства в работу KDE, на моемУбунту 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, так что меня это больше не волнует... но это может быть связано)
решение1
У вас такие же проблемы с аутентификацией по паролю или это действительно связано с аутентификацией по ключу?
Ваш клиент может обеспечить правильное разрешение DNS, но именно ваш сервер в любом случае попытается выполнить обратный поиск с вашего IP-адреса; это может объяснить задержку, как говорит @kasperd. Но по опыту это не превышает нескольких секунд.
SSH в конце концов успешно проходит аутентификацию? Если да, то это действительно похоже на проблему DNS. Попробуйте, если ваша конфигурация/администратор разрешает, добавить ваш IP/имя хоста в /etc/hosts сервера. Это обойдет разрешение DNS на стороне сервера. Если вы не настроите свой DNS для предоставления надлежащего обратного поиска на стороне сервера для клиента, useDNS no
это, как говорит @kasperd, должно быть помещено на /etc/ssh/sshd_config
сервере.
Если ваш администратор этого не сделает, то вы больше ничего не сможете сделать.
EDIT: 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
решение2
Для меня фактическим решением было добавление AddressFamily inet
моего локального хоста либо ~/.ssh/config
для соответствующего хоста, либо /etc/ssh/ssh_config
для Host *
.
Причиной проблемы, скорее всего, стало недавнее обновление до Ubuntu 15.05, и теперь ssh пытался (но безуспешно, с большой задержкой...) использовать IPv6.