【发布时间】:2019-07-01 15:23:09
【问题描述】:
我使用 libssh 通过 SSH 实现了客户端/服务器通信。我现在也想实现从客户端到服务器的文件上传,并一直在关注doc。
但是,它在呼叫 sftp = sftp_new(session); 时挂起。我是否也必须在服务器端为其显式打开另一个 ssh_channel ?到目前为止,我只在客户端添加了 sftp 代码。
【问题讨论】:
-
您提供的链接非常清楚“您不直接处理 SSH 通道”。请提供A Minimal, Complete, and Verifiable Example (MCVE)。
-
我理解客户端(或上传文件的人)不使用任何渠道的方式。但是我不知道在我启动了 ssh_session 和 ssh_channel 的服务器端该做什么。我是在那里创建另一个 sftp_session,还是打开另一个频道等。
-
sftp 通过 ssh 发生。从客户端到服务器的底层 ssh 连接处理对服务器的访问。如果你看几个例子,他们有一个例子,他们在服务器上创建一个文件。因此,与打开 TCP 连接需要在服务器上运行应用程序来监听连接不同,sshd 会为 sftp 处理。
-
libssh2 sftp example 和 libssh/examples/samplesftp.c 应该会有所帮助。