大家千万别再用libssh2这个库了 特别是在windows平台 问题太多 强烈推荐使用libssh这个库 虽然他们的名字很像 但是专业程度真的差远了 我是采过这个坑了 去年的时候 我想给自己开发一个Linux文件资源管理器 类似Windows的explorer.exe 百度搜了C++的库 最多的就是libssh2 他们的代码也很简单 去官网下载下来直接拖到VS2015里就可以编译了 而且网上资料很全 我就用这个库写了一个版本出来 也写完了 有一次我给客户搞东西 突然发现无法登陆了 然后我又下载了winscp这个软件 发现可以正常登陆 而我的就不行 我以为是我代码的问题 所以我就去官网下载了demo 发现不对了 官网的也无法登陆 问题就出在libssh2_session_handshake这个函数上 这个函数就是把套接字和ssh绑定的 意思很明白了 这个库导致很多服务器都无法正常使用的 比如 乌班图系统 以及Centos Stream版本
这个问题我一直没解决 后来我就去尝试libssh这个库 结果出乎我的意料 libssh这个库不存在这些问题 不仅上传速度和winscp一模一样 而且支持所有的操作系统 比如 乌班图 centos 都可以正常连接了 上传速率也不会限速了 也能达到和winscp一抹一样的速度了
所以 如果有想开发Linux的ssh工具的 尽量不要使用libssh2 推荐使用libssh 别的不说 这两个库完全没有可比性 稳定性和兼容性都没法比的
下面是去年通过libssh2库实现的 当服务器换成乌班图或者centos stream就无法登陆了 上传速度也很慢 (调大缓冲区也没用)