从mscdex/ssh2源码入手,分析ssh协议原理

424 阅读1分钟
  1. 最开始在node写的是ssh root@ip 到目标机器上去获取一个文本文件的配置信息写到本地,以同步开发环境的服务。但是直接写execSync(ssh root@${mn} "cat path/data.json")会弹出一个输入ssh密码的对话框。
  2. 想到之前用过ssh2这个框架,但是又不想在项目里面引入,就去看了一下源码。从exec执行命令的函数开始看。可以追溯到最后其实这个client其实是建立了一个socket连接,然后发送 数据包 去实现最终的到对应机器执行脚本。
  3. 思路很好,但是手动造个简易的轮子就不好写了。最终用户是自己所以妥协了每次去输入ssh 密码
  4. 这次看源码没有打断点,全程奔着代码跳着看。推荐github新的工具cs.github.com 搜索代码很好用。

重新看了一下ssh协议,SSH协议中的协商和认证过程,其实都是通过Socket输入流、输出流的形式实现的。也就是完全有可能从Socket套接字开始,逐步实现SSH的传输协议、认证协议以及连接协议。