突然,在过去的几天里,我需要很长时间(最多 30 秒)才能与我的大多数(但不是全部)Amazon EC2 实例建立 SSH 连接。亚马逊已经提出了这个问题,看看它是否对他们来说是环境问题,但我想知道是否有什么我可以检查实例本身的东西。
大部分时间都花在了这一步:
使用公钥“imported-openssh-key”进行身份验证
进入实例后,通过以下方式更改用户
su - 新用户名
无限期挂起。
其他命令(ps、top、find)运行速度与以往一样快。
我在实例(Web 服务)上运行的应用程序响应速度非常快。实例上的 CPU、IO 和磁盘负载不是很高。
编辑:
Dave 建议的strace su - myusername的最后几行输出:
connect(4, {sa_family=AF_INET, sin_port=htons(389), sin_addr=inet_addr("W.X.Y.Z")}, 16) = -1 EINPROGRESS (Operation now in progress)
poll(
这条线以 10 秒的间隔重复出现......它在poll(挂起10 秒,然后重复相同的输出。
引用的 IP 地址是我们的 LDAP 服务器的公共 IP 地址。
问题是实例试图通过公共 IP 地址而不是私有 IP 地址解析 LDAP 服务器。向其他实例开放公共 IP 解决了该问题。
通常当发生奇怪的挂起时,我可以将其追溯到 RDNS - 您连接的主机没有设置它,或者服务器解析 RDNS 存在问题。
但是,据我所知,su 不应该对 RDNS 做任何事情。
你用'strace'跟踪这个过程会发生什么?
编辑:
因此,与 LDAP 服务器的连接似乎超时。您是否确认 LDAP 服务器正在与其他系统一起使用?也许您可以使用以下方法跟踪 LDAP 服务器上的流量:
了解连接时会发生什么。