龙芯技术社区
直播中

tinnu

8年用户 133经验值
擅长:可编程逻辑 嵌入式技术 控制/MCU
私信 关注
[2K系列]

【龙芯2K0300蜂鸟板试用】tinnu-02-有线网卡驱动问题导致的SSH连接问题

SSH连接探索

  • 拿到板子的时候,完全没有想到区区一个SSH连接会趟坑。
  • 周末研究了两天,SSH一直连不上。

openssh 服务

  • 首先怀疑是旧的镜像没有 openssh 服务,因此更新了系统,看到启动项目里面已经有 openssh 服务启动的日志。
    01.png
    • 可以通过 systemctl 命令看看目前的服务

Log分析

  • 结果依然无法连接,于是我进行了回环测试,发现板子自身连接自己是完全没问题了。但外部设备连进去不行,而且换了好几个PC、手上的3399去连,都不行。
    • 我把 /etc/ssh/sshd_config 里面的
      • LogLevel INFO
      • 改为:
      • LogLevel DEBUG
    • 重启服务 systemctl restart sshd.service
  • 再次连接,这回加上-vv参数检查详细的调试日志,就可以看到客户端 SSH2_MSG_KEXINIT 已经发送
    03.png
  • 使用systemctl status sshd.service检查,发现服务端一直 SSH2_MSG_KEX_ECDH_INIT 等待。
    02.png

加密算法的猜测

  • 这时候我认为是龙芯板端服务卡住了,是不是系统带的ssh有问题?
  • 这时候我开始怀疑是加密算法的问题。甚至怀疑是龙芯的加密库是不是特殊的,跟其他体系不兼容。于是用telnet连接,发现可以正常连上!
    • 首先在开发板端执行 telnetd
    • 然后在PC端执行 telnet 《IP》
  • 这时候我就进一步怀疑加密算法的问题。
    • 把系统支持的算法都打印出来:
      10.png
  • 检查过 cipher kex macs ,没发现什么
  • 这时候开始对 /etc/ssh/sshd_config 文件文件动手了,基本被改得面目全非。又是改端口、指定比较旧的加密算法,结果都不行。
  • 这个时候玄学的事情发生了,中途偶然连接成功了一次!
    • 但是我退出来再重新连又失败了,后来陆陆续续成功了几次,概率非常低。
  • 最后为开发板配置了:
    Ciphers aes128-ctr
    MACs hmac-sha2-256-etm@openssh.com
    KexAlgorithms curve25519-sha256@libssh.org
    
  • 配置好后,再次尝试连接,成功! 这时候我已经基本确定了龙芯的软件库有问题了。

定位网卡问题

  • 但是别急,很快反转就来了:
    • 我使用 ssh 和 telnet 分别连上去修改配置文件,这时候发现只要是 vim 打开比较大的文件时就会卡死。
    • 于是我用scp拉了一下文件,发现一直卡在 0% 一动不动。
    • 联想到上面 SSH2_MSG_KEXINIT 已经发送,但服务端一直 SSH2_MSG_KEX_ECDH_INIT 等待的问题,我生出一个大胆的想法:
      • 会不会是网卡本身有问题? 由于一开始ping都是正常的,没往这边想,于是我换了路由器、挂了USB网卡,设置静态IP全部试过,都不行。
      • 又试了试WIFI,我看宣传页上面说支持正点原子的一套东西,包括WIFI模块,刚好我之前买过,插上去,结果只看见 lsusb里面有设备,ifconfig没有网卡出来。
  • 一筹莫展的时候,突然瞅了一眼串口,发现网卡是100M,我寻思宣传页说是1000M的,于是又生出一个大胆的想法:
    • 会不会是只能支持1000M?
    • 于是我直连笔记本自带的1000M网卡。一开始试了几次自动掉回100M,拔插了几次后终于稳定下来。
    • 04.png
  • 再测了下 SSH ,瞬间连上!
  • 把 sshd_config 还原后,依然能够正常连上!
  • 速度也是够的
    09.png
  • 破案了:这个板子的网口在buildroot的内核下对百兆支持有问题!只能使用千兆网。
  • 由于我手上的设备都是百兆的,包括路由器和usb网卡,这波只能用笔记本自带的千兆口带静态IP来开发了。
    08.png

2024.08.15更新

  • 补充视频:可以看视频内容,使用的 boot uImage rootfs 均为7月24日最新的固件。
  • 特别说明:在百兆网下面,是可以ping通的。但是速度很慢。
  • 上面也提到telnet是可以连接的,但是明显没有速度。打开大文件有几率失败。
  • SSH可能是由于多次认证的协议交互速度过快,可能是由于丢包,导致交互卡住,无法连接。上面提到更换一些老旧的、简单的密钥协议是可以提高连接成功率。
  • 最后,还是建议用千兆网吧,千兆网下面一切正常。

240814-5-loongarch-100M.

回帖(5)

dianzi_0101

2024-8-12 11:37:55
破案了:这个板子的网口在buildroot的内核下对百兆支持有问题!只能使用千兆网。
举报

申小林一号

2024-8-12 15:33:21
学习了,竟然还有这个问题!
1 举报
  • tinnu: 百兆网的问题我已经更换过三个不同款式的路由器、还额外尝试过USB网卡静态IP直连,全都存在这个问题。 同样实验下,千兆网不存在。如果是我的环境造成的,那这个“我的环境”影响范围还挺大的。

jf_38522704

2024-8-15 09:01:11
百兆,千兆网都是可以自适应正常使用
可能是你的环境造成的。
1 举报
  • 申小林一号: 我这里百兆使用也是有问题的,SSH连接一段时间久无法通信了,但是再次连接还是可以连接上,升级系统之后SSH就没法用了,哈哈哈

jf_38522704

2024-8-20 15:07:04
感谢坛主的细心测试,之前大意了只测试了ping 和 tftp,没测ssh。

现在千兆网,百兆网情况下,都可以正常工作
需要更新下u-boot
网盘链接:https://pan.baidu.com/s/1qMp1Mjhdm0OAQJRxYuY27Q?pwd=1234
提取码:1234

1 举报

更多回帖

发帖
×
20
完善资料,
赚取积分