通过密钥进行 SSH 速度非常慢

通过密钥进行 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,所以我不再关心这个......但它可能相关)

答案1

您是否遇到过同样的密码认证困扰,或者这确实与密钥认证有关?

您的客户端可能提供了正确的 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 

答案2

对我来说,实际的解决方案是AddressFamily inet在我的本地主机上添加到~/.ssh/config适当的主机/etc/ssh/ssh_configHost *

问题的原因很可能是最近升级到 Ubuntu 15.05,并且 ssh 现在正在尝试(但失败,延迟很长...)使用 IPv6。

相关内容