【问题标题】:Kernel module for SSH/SCP drive用于 SSH/SCP 驱动器的内核模块
【发布时间】:2011-11-07 00:06:32
【问题描述】:

我和我的同事有一个项目,要制作一个驱动程序,该驱动程序将提供对远程驱动器的访问,就像它是本地驱动器一样(使用 SSH/SCP)。驱动器通常应该被视为驱动器,操作可以仅限于简单的文件操作(复制、移动、删除),没有文件列表等。驱动程序应该是一个 linux 内核模块(可能不完全..)。

我们设法收集了一些信息和想法,也许有人可以验证它们,或者将我们推向一个好的方向?

我们考虑将其拆分为 2 个组件:

  • 实现虚拟驱动器的内核模块,
  • 负责 SSH/SCP 通信的用户空间守护进程,

因为我们无法想象在内核模块中实现 SSH 通信(是的,它可能是可能的,但是..)。

对于 SSH/SCP 通信,我们认为可以使用 libssh。 关于在内核模块中实现虚拟驱动器,我们找到了tutorial

另一种情况是内核和用户空间之间的通信。我们还找到了一个article 讨论这个问题,有很多可能性,比如 UDP 套接字或 NETLINK。

有了这个解决方案,我们可以忘记内核模块中任何与 SSH/SCP 相关的东西——它对内核是透明的。

我们的想法好吗?也许有一些我们没有预见到的警告?这是正确的方法,还是有更好/更简单的方法(但仍然与 linux 内核有关,因为这是项目的主要领域;))?我们应该使用哪些想法?非常感谢链接:)

编辑:这是我们必须为大学课程做的一个项目 - 所以找到一个已经实施的解决方案不是问题,而是自己动手做..

【问题讨论】:

标签: linux ssh linux-kernel linux-device-driver kernel-module


【解决方案1】:

您可能想看看FUSE,尤其是SSHFS。这基本上就是你所描述的,已经实现了。

【讨论】:

  • 但这是我必须做的一个项目 - 对于我的大学课程之一,所以.. 什么都没做;)
  • 那么您可以阅读他们的文档并从 FUSE 架构中学到很多东西。
【解决方案2】:

那么不要在内核内部进行加密。

传统观点认为内核代码应该非常小,这对学生来说更是如此(因为内核代码很难调试,其中的错误会导致整个系统崩溃。

研究一下 FUSE 正在做什么,并在项目中提及它。

然后,让您的内核模块保持较小并与用户空间守护程序通信(以简单、高效、未加密的方式),正如您最初猜想的那样。

也许您不需要编写内核代码,而只需要编写用户部分(您必须了解老师对您的期望)。然后,您只需重新实现 FUSE 的 SSHFS 示例,就可以使用 FUSE 已经提供的机器了。

不要说虚拟驱动器,要说用户空间文件系统。

【讨论】:

  • 我认为内核代码在这个项目中可能是必不可少的,但我们会和我们的老师讨论;)谢谢!
  • 我猜这个项目的难度可能降低了@shiza 对编程的兴趣,因为他是2014 年 6 月 6 日 13:26 ʘ‿ʘ。
【解决方案3】:

我认为您不需要任何内核模块,因为您可以使用 FUSE

【讨论】:

  • 查看我的编辑,这是我必须为大学课程做的项目。
猜你喜欢
  • 2011-11-11
  • 2015-12-16
  • 2021-09-09
  • 1970-01-01
  • 2013-01-17
  • 1970-01-01
  • 2022-10-16
  • 2023-03-24
  • 1970-01-01
相关资源
最近更新 更多