最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

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

网站源码admin26浏览0评论

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

如何打开持久的 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 做目录列表等。

发布评论

评论列表(0)

  1. 暂无评论