对于我的一台服务器来说,通过 SSH 启动交互式 shell 很慢。导致它的一切(包括协商加密)都很快,但随后挂起 45 秒。之后,它就完成了,我就有了一个外壳。如何识别它挂在什么上?我尝试清理环境并禁用所有转发,以防减慢速度,但没有帮助。这是我的测试命令:
env -i ssh -x -a -vvv server
这是 SSH 的输出:
debug1: channel 0: new [client-session]
debug3: ssh_session2_open: channel_new: 0
debug2: channel 0: send open
debug1: Requesting [email protected]
debug1: Entering interactive session.
*(hangs for 45 seconds here)*
debug3: Wrote 128 bytes for a total of 3191
debug2: callback start
debug2: client_session2_setup: id 0
debug2: channel 0: request pty-req confirm 1
debug1: Sending environment.
答案1
在一个非常相似的情况下,它是 update-motd 脚本之一。
下面的方法就成功了:
sudo rm /etc/update-motd.d/90-updates-available
这是一个小助手,用于测量每个脚本的时间:
$ for f in /etc/update-motd.d/*;do echo $f;time $f;done
/etc/update-motd.d/00-header 0m0.007s
/etc/update-motd.d/10-help-text 0m0.005s
/etc/update-motd.d/90-updates-available 0m49.163s
/etc/update-motd.d/91-release-upgrade 0m0.152s
/etc/update-motd.d/98-fsck-at-reboot 0m0.015s
/etc/update-motd.d/98-reboot-required 0m0.003s
(output reduced to the relevant parts)
答案2
pam_krb5.so 配置为获取不存在的 shell 的 AFS 令牌,该 shell 有 30 秒的超时时间,会停止使用该模块的任何身份验证,而不仅仅是 SSH。删除它,身份验证会发生得更快。
答案3
如果您的 ssh 服务器激活了反向 DNS 映射,则可能是延迟的原因,请在服务器的文件VerifyReverseMapping
中查找。/etc/ssh/sshd_config
答案4
我有下一个案例和解决方案。通过 SSH 登录出现问题 - 会话打开时间过长。与须藤苏命令也会卡住 20-40 秒。解决方案
systemctl disable motd
systemctl stop motd
真正的问题出在我们公司的 DNS 上。