如何加快我的ssh登录速度太慢?


42

跑步ssh user@hostname大约需要30秒。这是场景:

  • 这是本地LAN上的VM
  • Windows和Mac机器可立即登录
  • 我正在使用Debian,我可以用Ubuntu机器进行复制
  • 使用Ubuntu的人说登录到我的计算机(本地LAN)也是即时的
  • 使用主机名IP地址大约需要一半的时间(约15秒)

[ 更新 ]

使用ssh -vvv user@hostname,这是等待最多的地方:

debug3: authmethod_lookup gssapi-with-mic
debug3: remaining preferred: publickey,keyboard-interactive,password
debug3: authmethod_is_enabled gssapi-with-mic
debug1: Next authentication method: gssapi-with-mic

然后在这里等待一点:

debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found

debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found

1
您使用密码还是pubkey身份验证?如果是密码,则您的a id_dsaid_rsa文件是~/.ssh?也许您的ssh安装首先尝试了错误的身份验证,并且您的服务器没有拒绝,但只是忽略了该请求,从而导致30s超时
Tobias Kienzler 2011年

@tobias我使用密码,但没有"~/.ssh"文件。那是目录,里面只有"known_hosts"文件。
tshepang 2011年

5
您好像有15秒的DNS超时。也许服务器正在执行DNS查找;如果可以,请确保您有UseDNS nosshd_config服务器上。无论如何,请运行ssh -vvv user@hostname以查看登录名的挂起位置。
吉尔(Gilles)“所以,别再邪恶了”,

@吉尔谢谢。我更新了问题。我将要求管理员检查该UseDNS设置。
tshepang 2011年

3
@Tshepang:哦,您正在使用Kerberos(GSSAPI)身份验证。我不熟悉。如果配置错误,可能是造成延迟。您可以向管理员询问。DNS可能是个麻烦。这是最普遍的原因,但也许您的问题有所不同。
吉尔(Gilles)“所以

Answers:


32

编辑您的“ / etc / ssh / ssh_config ”并注释掉以下行:

GSSAPIAuthentication yes
GSSAPIDelegateCredentials no

3
+1好答案!(1)ssh登录连接占用光标闪烁时间7次是否正常?(2)为什么通过注释掉GSSAPIAuthentication yes和起作用 GSSAPIDelegateCredentials no?@Tshepang
Tim

@Tim(1)太长了……取决于连接,我不希望它花费超过2秒的时间;(2)我不知道它是否有效
tshepang 2012年

1
在大多数版本的OpenSSH中,GSSAPIAuthentication的默认值为“否”,但是某些发行版在sshd_config和ssh_config文件中将其设置为“ yes”。如果不需要/不使用它,则会减慢连接/身份验证握手的速度。
tgharold

如果正在使用LDAP / AD身份验证,是否禁用GSSAPI会导致使用简单的绑定,从而有可能通过网络以明文形式发送密码?
香农

验证所有名称服务器仍在/etc/resolv.conf中。如果没有,将它们取出。这解决了我的问题。
技术专家

30

我遇到了这个问题,并通过关闭SSH中的反向DNS解析来解决了这个问题。

因此,sshd_config服务器上进行以下更改:

 #UseDNS yes

对此:

UseDNS no

1
我做了更改(尽管我没有注释掉UseDNS选项),重置了我的ssh服务器,仍然是同样的问题。
tshepang 2011年

2
@她嗯,奇怪。由于此,我使用SSH遇到的唯一速度问题。
Earlz 2011年

1
我对使用IP地址(家庭局域网)登录时表示怀疑,但是此解决方案解决了我的问题。为了Google的缘故,尽管延迟是在紧随其后发生的,但与“ key:/home/mylogin/.ssh/id_ecdsa((nil))”消息(运行时ssh -vvv)无关。
Skippy le Grand Gourou 2014年

7

您是否已验证DNS设置?

尝试设置mdns off/etc/host.conf

这禁用了mdns分辨率,对我有很大帮助。

编辑:

gentoo似乎在处理此问题上有所不同。要禁用多播DNS查找,您必须更改文件/etc/nsswitch.conf
应该是这样的:

hosts:          files mdns

更改为:

hosts:          files dns

+1好主意。直接使用主机名的IP时,@ Tshepang ssh的连接速度更快吗?
Tobias Kienzler 2011年

@tobias需要一半的时间
tshepang 2011年

/etc/host.conf: line 2: bad command 奔跑时要下车了ssh user@hostname
tshepang 2011年

自glibc 2.3.x(2006)起,这似乎已经过时了:forums.gentoo.org/viewtopic-t-476558-highlight-mdns.html。您正在使用什么(操作系统,glic版本)?
tshepang 2011年

1
您说的是使用IP地址只花费一半的时间。这意味着您的名称解析有问题(IP => FQDN或FQDN => IP)。因此,首先查看您的DNS配置,然后尝试找出ssh是否存在问题。
基督教徒


1

还要检查是否nscd已安装并正在运行。

没有dns缓存会增加解析PTR记录所花费的时间(假设ssh客户端正在对服务器的IP地址执行dns反向查找)


0

我在Windows 2008 R2环境中遇到相同的问题,但“ useDNS no”不起作用。

我尝试将连接服务器的IP和主机添加到主机文件中,并将其速度提高30秒。这使我认为解决方案可能在DNS中。

我尝试添加DNS服务器,但这不能解决问题。

我的服务器有两个DNS后缀。1个用于服务器所属的公司域(domain.com),另一个用于其连接到专用网络的外部接口(domain.net)。

DNS后缀顺序为domain.net,然后为domain.com

我的SFTP / SSH客户端位于公司域中。顺便说一句,有问题的客户来自公司领域。

对我有用的是,我先创建domain.com,然后再创建domain.net

2m30s的连接延迟才变为3-4s。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.