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.