如何打开持久的 SSH 客户端来制作基于 Web 的文件管理器?

编程入门 行业动态 更新时间:2024-10-04 03:20:20

如何打开持久的 SSH 客户端来制作基于 Web 的文件<a href=https://www.elefans.com/category/jswz/34/1771061.html style=管理器?"/>

如何打开持久的 SSH 客户端来制作基于 Web 的文件管理器?

我目前正在使用

shelljs
在每次需要使用ssh功能时建立连接。

class Connection {
  constructor(id, path) {
    this.id = id;
    this.path = path;
  }

  exec(silent, ...args) {
    const { exec } = shellJS;
    const execCmd = exec(
      ['ssh ', ...args].join(' '),
      { silent }
    );
    // FormError(execCmd);
    return execCmd;
  }
}

class FileManager {
  constructor(connection) {
    this.connection = connection;
  }

  async ls(path = '') {
    const newPath = path ? `'${path}/'` : '';
    const listing = this.connection.exec(false, `"ls -l ${newPath}"`);
    return parseEntries(listing.stdout);
  }
}

EDIT1:布拉德回答后,安装可能无法在这里工作,因为

  1. 我们对该服务器的访问权限非常有限(不确定是否可以安装)
  2. 这里的代码有些简化。真正的流程是:

    Local -> SSH Server
    -> AnAppThatManagesCloudBuckets <command>
    -> Output
    
回答如下:

您的代码容易受到命令注入的影响,并且本质上是不安全的,并且对于边缘情况可能不可靠,例如带有保留字符的路径/文件名。

我会推荐一种完全不同的方法。使用 SSHFS 挂载远程文件系统。然后,使用标准的 Node.js fs API 做目录列表等。

更多推荐

如何打开持久的 SSH 客户端来制作基于 Web 的文件管理器?

本文发布于:2024-05-31 05:36:57,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1771330.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:管理器   持久   端来   客户   文件

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!