【问题标题】:ssh connection stop at "debug1: SSH2_MSG_KEXINIT sent" [closed]ssh 连接在“debug1: SSH2_MSG_KEXINIT sent”处停止 [关闭]
【发布时间】:2013-06-17 05:59:53
【问题描述】:

我已将 ssh 端口号从 22 更改为 2222 之前设置连接到默认 ssh 端口 22 没问题 我已经正确映射了路由器上的 NAT

当我尝试调试它时

ssh -v -p2222 www.example.com

我得到这个错误挂起

debug1: SSH2_MSG_KEXINIT

以下是所有调试日志

bob@server:~$ ssh -v -p2222 www.example.com
OpenSSH_4.7p1 Debian-8ubuntu1.2, OpenSSL 0.9.8g 19 Oct 2007
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to www.example.com [100.100.100.100] port 2222.
debug1: Connection established.
debug1: identity file /home/bob/.ssh/identity type -1
debug1: identity file /home/bob/.ssh/id_rsa type -1
debug1: identity file /home/bob/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_4.7p1 Debian-8ubuntu1.2
debug1: match: OpenSSH_4.7p1 Debian-8ubuntu1.2 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu1.2
debug1: SSH2_MSG_KEXINIT sent
Connection closed by 100.100.100.100

就像那个连接被关闭一样 我在网络内外的几台机器上使用了 gnome-terminal、putty、securecrt 仍然都得到相同的错误

【问题讨论】:

标签: ssh


【解决方案1】:

我刚刚在 XEN 主机上遇到了这种情况。我已经从另一个主机复制了这个主机,按照惯例,我在这样做之后删除了 /etc/ssh 中的主机密钥,认为以后会生成新的。但这从未发生过,sshd 愉快地在没有主机密钥的情况下启动。当尝试 ssh 到这个主机时,它会在 SSH2_MSG_KEXINIT 之后退出。我所要做的就是创建主机密钥,在基于 debian 的机器上是这样完成的:

dpkg-reconfigure openssh-server

【讨论】:

  • 在我看来,这是唯一正确的答案!但也许只是为了我的用例
  • 这解决了我的 phusion/baseimage docker 容器上发生的问题(不要问我为什么要在 docker 实例上设置 ssh - 这是由于原因和其他原因)
  • 这不完全是我的问题,但它让我更接近了。就我而言,问题是主机密钥迁移后,权限不正确。
  • 这解决了我的问题。 /var/log/auth.log 中的条目可能表明此解决方案将起作用,例如“sshd[8942]:错误:无法加载主机密钥:/etc/ssh/ssh_host_rsa_key”和“sshd[8942]:致命:否支持的密钥交换算法 [preauth]"。
【解决方案2】:

我遇到了这个问题,并通过将目标路由器/防火墙和目标主机上的 MTU 设置为与源主机相同 (1500) 来解决它。

【讨论】:

  • 此处相同 - 双方的 MTU 均为 9000,但中间的切换配置错误。您可以使用ping 来测试问题,其中数据包的大小不超过定义的 MTU。
  • 哇!永远不会猜到这一点,但在一次 Wireshark 跟踪之后就落在了这上面。很棒的收获。
  • 这似乎也解决了我的问题。我将 Tunnelblick 用于我的 VPN,一旦我在 VPN 详细信息中设置了“连接后运行 MTU 最大大小测试”,SSH 就又好了。
  • 同样的问题 cisco 在绑定模式下切换新网卡双端口并在操作错误时挂起,也没有 webmin 访问权限。尝试了 ping 命令,果然和我在接口文件中定义的不同,改变了交换机中的 mtu 都解决了!谢谢!
【解决方案3】:

我遇到了同样的问题,当我在 sshd_config 中更改端口并重新启动 sshd 服务时,sshd 感到困惑,当我最终查看服务器日志(看起来你不能)时,sshd 抱怨端口已经在使用中,netstat 同意了,并且 ps 显示了几个正在运行的 sshd 服务实例。我杀死了那些并再次启动 sshd 备份,并且能够连接。我发誓我尝试重新启动以解决问题,但我想不会,因为这可能会解决问题。

长话短说,应该在端口 2222 上侦听以对您进行身份验证的 sshd 不是实际侦听的,而是另一个 sshd 进程。如果你遇到和我一样的问题。

【讨论】:

  • 谢谢,我把默认端口(22)放回去了,它又可以工作了!虽然我试图杀死并重新启动 ssh 服务但没有成功......
【解决方案4】:

SSH2_MSG_KEXINIT 不是错误。它只是告诉你它正在开始 ssh 密钥交换过程。

如果此时另一端正在关闭连接,显然它出于某种原因不喜欢你 :-) 你是否有权访问正在连接的服务器上的日志?这可能包含有关为什么会突然关闭连接的信息。 (例如 tcpwrappers)

【讨论】:

  • 很遗憾,我无法访问日志:
  • 在 CentOS6.4 docker 容器上遇到了这个问题。需要生成密钥:ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key 在 /etc/ssh/sshd_config 中添加“UsePAM no”。如果不是安全问题,“PermitRootLogin yes”。
猜你喜欢
  • 2018-06-05
  • 1970-01-01
  • 1970-01-01
  • 2017-04-05
  • 2017-04-13
  • 1970-01-01
  • 2013-11-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多