Flutter 的 SSH / SFTP 插件 - ssh

ssh

用于创建 SSH / SFTP 客户端的 Flutter 插件,iOS 端封装了 NMSSH,Android 端封装了 JSch。支持 SSH 执行命令、实时 Shell 和基本的 SFTP 操作,同时支持密码或密钥验证。

GitHub
Dart Pub


安装

在 pubspec.yaml 文件中添加 ssh 依赖:

dependencies:
  ssh: ^0.0.2

用法

创建 client 并使用密码验证

import 'package:ssh/ssh.dart';

var client = new SSHClient(
  host: "my.sshtest",
  port: 22,
  username: "sha",
  passwordOrKey: "Password01.",
);

创建 client 并使用密钥验证

import 'package:ssh/ssh.dart';

var client = new SSHClient(
  host: "my.sshtest",
  port: 22,
  username: "sha",
  passwordOrKey: {
    "privateKey": """-----BEGIN RSA PRIVATE KEY-----
    ......
-----END RSA PRIVATE KEY-----""",
  },
);

连接 client

await client.connect();

关闭 client

await client.disconnect();

执行 SSH 命令

var result = await client.execute("ps");

Shell

连接 shell:

  • ptyType 的可选类型: vanilla, vt100, vt102, vt220, ansi, xterm
var result = await client.startShell(
  ptyType: "xterm", // 默认为 vanilla
  callback: (dynamic res) {
    print(res);     // 从 shell 读数据
  }
);

向 shell 写数据:

await client.writeToShell("ls\n");

关闭 shell:

await client.closeShell();

SFTP

连接 SFTP

await client.connectSFTP();

获取目录列表:

var array = await client.sftpLs("/home"); // 默认路径为“.”

创建目录:

await client.sftpMkdir("testdir");

重命名文件或目录:

await client.sftpRename(
  oldPath: "testfile",
  newPath: "newtestfile",
);

删除目录:

await client.sftpRmdir("testdir");

删除文件:

await client.sftpRm("testfile");

下载文件:

var filePath = await client.sftpDownload(
  path: "testfile",
  toPath: tempPath,
  callback: (progress) {
    print(progress); // 获取下载进度
  },
);

// 取消下载:
await client.sftpCancelDownload();

上传文件:

await client.sftpUpload(
  path: filePath,
  toPath: ".",
  callback: (progress) {
    print(progress); // 获取上传进度
  },
);

// 取消上传
await client.sftpCancelUpload();

断开 SFTP:

await client.disconnectSFTP();

示例程序

请参考 example

安装

flutter packages get

运行

flutter run
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,399评论 19 139
  • 加密算法 对称加密算法 加密和解密使用同一个密钥 DES、3DES、AES、Blowfish、Twofish、ID...
    毛利卷卷发阅读 5,550评论 0 4
  • 概述 SSH是(Secure SHell protocol) 的简写,安全外壳协议(SSH)是一种在不安全网络上提...
    技术学习阅读 54,064评论 9 41
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,054评论 6 342
  • 1、远程连接服务器 远程连接服务器对于管理员来说,是一个很有用的操作。它使得对服务器的管理更为方便。不过方便归方便...
    Zhang21阅读 39,681评论 0 20