加载中…
个人资料
_src
_src
  • 博客等级:
  • 博客积分:0
  • 博客访问:528,672
  • 关注人气:30
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
正文 字体大小:

ssh登陆卡住(expecting SSH2_MSG_KEX_ECDH_REPLY)

(2015-03-11 18:41:45)
标签:

ssh

登陆

卡住

expecting

ssh2_msg_kex_ecdh_re

分类: Ubuntu/Debian

openvpn虚拟网卡mtu导致ssh登陆不上 

ssh expecting SSH2_MSG_KEX_ECDH_REPLY 卡住 登陆 openvpn

问题描述

当前使用系统为 Ubuntu, 
登陆openvpn后ssh连接内网机器时,一直卡住无法登陆, 
该内网机器可以ping通,并且探测ssh端口也没问题:


# nc -zv 192.168.1.10 22
Connection to 192.168.1.10 22 port [tcp/sshd] succeeded!

而切换到windows系统,同样使用openvpn在ssh登陆到同个服务器无问题。


问题解决

重新回到ubuntu,使用ssh加上-vvv参数,检查登陆信息,发现是到这里卡住:


debug2: kex_parse_kexinit: none,
debug2: kex_parse_kexinit: none,
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit: first_kex_follows 0
debug2: kex_parse_kexinit: reserved 0
debug2: mac_setup: found hmac-md5
debug1: kex: server->client aes128-ctr hmac-md5 none
debug2: mac_setup: found hmac-md5
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY

就是这一行debug1: expecting SSH2_MSG_KEX_ECDH_REPLY.

google搜了下,发现有两个可能的原因:

  • 一个是因为IPv6导致,这个可以排除;
  • 另外一个就是mtu问题,也即虚拟网卡mtu大于vpn服务器那边的网络mtu。

尝试修改openvpn的虚拟网卡mtu,发现真的可以成功登陆上:

利用ifconfig找到虚拟网卡的设备号:tun0

然后修改mtu为1200:


ifconfig tun0 mtu 1200

然后重新用ssh登陆服务器,能够成功登陆上。

问题解释

这里简单说下原因(可能不是很准确):

  1. 因为使用openvpn,本地主机与服务器的连接是通过tun0这个虚拟网卡设备;
  2. vpn服务器到目标服务器之间的网络设备(简称为目标网络)规定的MTU比tun0的MTU小;
  3. ssh 密钥交换阶段一次发送的数据一般大于 1500 字节,因此至少填满了一个 MTU;
  4. 通过tun0发出密钥交换信息,因为大于目标网络的MTU,而被丢弃;
  5. tun0设备的MTU设置为1200后,不会超过目标网络设定的MTU,因此可以正常交换密钥。

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有