使用ssh连接到我的一台服务器需要超过20秒的时间才能启动。
这与局域网或广域网条件无关,因为连接到本身需要相同的(ssh localhost)。 连接build立之后,与服务器进行交互是非常快的。
使用-vvv表示在说出“pledge:network”之后连接被卡住了。 此时,身份validation(这里使用密钥)已经完成,如下所示:
... debug1: Authentication succeeded (publickey). Authenticated to myserver.mydomain.com ([xx.xx.xx.xx]:22). debug1: channel 0: new [client-session] debug2: channel 0: send open debug1: Requesting [email protected] debug1: Entering interactive session. debug1: pledge: network
(…在这里停留15到25秒…)
debug1: client_input_global_request: rtype [email protected] want_reply 0 debug2: callback start debug2: fd 3 setting TCP_NODELAY debug2: client_session2_setup: id 0 ...
服务器是Ubuntu 16.04。 它已经发生在我以前与另一台服务器(是Ubuntu 12.04),nerver发现解决scheme,并在一段时间后消失的问题…
sshd_config是Ubuntu提供的默认configuration。
到目前为止我已经尝试过:
这可能是D-Bus
和systemd
。 如果出于某种原因重新启动了dbus
服务,则还需要重新启动systemd-logind
。
你可以通过打开ssh守护进程日志(在Ubuntu上它应该是/var/log/auth.log
)来检查这是否是问题,并检查它是否包含这些行:
sshd[2721]: pam_systemd(sshd:session): Failed to create session: Connection timed out
如果是,只需重新启动systemd-logind
服务:
systemctl restart systemd-logind
我在CentOS 7上也遇到同样的问题,因为messagebus
已经重新启动了(这是在CentOS上调用D-Bus
服务的方式)。
find答案:
在sshd_config文件中将UsePAM从yes更改为no
重新启动ssh服务后,现在立即连接到服务器。 在这个服务器上,PAM链接到ldap,所以这可能是原因,即使在这里,我正在连接一个在服务器本身声明的用户,而不是LDAP。
那么,这是更好的办法来绕过这个问题,而不是一个真正的解决scheme…我有其他服务器设置相同的方式,没有这个问题。
希望这可以帮助别人…
这发生在我的两个Fedora 25服务器上,并且是由于很多失败的SSHlogin尝试。
(使用GSSAPIAuthentication=no
和UseDNS=no
或重新启动systemd-logind
的常见build议没有任何区别。)
在这些服务器上,/ /etc/pam.d/postlogin
包含:
session optional pam_lastlog.so silent noupdate showfailed
pam_lastlog
的手册页解释了showfailed
选项将会:
显示失败的login尝试次数以及btmp上一次失败尝试的date。
在这些服务器上,由于许多失败的login尝试, /var/log/btmp
文件是巨大的。 btmp
日志文件也没有被旋转。
我安装了logrotate
软件包以确保将来日志文件将被旋转。 (在Fedora上, logrotate
自带的configuration处理/var/log/btmp
的旋转。)
我也删除了巨大的btmp
日志文件; 只要我这样做,连接到服务器是瞬间再次。
对于我来说,这个问题是由大量(数百MB)的btmp
文件造成的。 该文件logginglogin尝试。 当人们试图暴力破解密码时,这个文件可能很大,导致"pledge: network"
阶段的延迟。
尝试清除日志文件
echo "" > /var/log/btmp
看看是否有帮助