如何在Android 中实现scp操作

 更新时间:2021年03月17日 14:24:42   投稿:yxs  
这篇文章主要介绍了如何在Android 中实现scp操作,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下

本文简单介绍用SSH库ganymed-ssh2在Android中实现scp操作。

SSH

SSH是专为远程登录会话和其他网络服务提供安全性的协议,简单的说就是一种网络协议。是linux的标准配置。用于linux设备之间的通讯。

SCP

SCP是一种基于SSH完成加密拷贝文件的协议。使用SSH进行身份认证确保数据传输的真实性和可靠性。

SCP默认通过TCP端口22运行

SCP程序常用语法:

// 复制文件到主机
scp SourceFile user@host:directory/TargetFile


// 从主机复制文件
scp user@host:directory/SourceFile TargetFile
scp -r user@host:directory/SourceFolder TargetFolder
// 从主机复制文件
scp user@host:directory/SourceFile TargetFile
scp -r user@host:directory/SourceFolder TargetFolder

SFTP

SFTP也是基于SSH安全文件传输协议。不同于基于FTP,FTP基于Tcp使用明文传输用户信息。安全性较差。

Android中使用SCP

  • 下载ganymed-ssh2 jar包
<!-- https://mvnrepository.com/artifact/ch.ethz.ganymed/ganymed-ssh2 -->
<dependency>
  <groupId>ch.ethz.ganymed</groupId>
  <artifactId>ganymed-ssh2</artifactId>
  <version>build210</version>
</dependency>

官方下载地址 http://www.ganymed.ethz.ch/ssh2/

public class Scp {

  private volatile static Scp scpInstance;

  private String user;
  private String pass;
  private String host;
  private Connection connection;
  private SCPClient scpClient;
  private Boolean isAuthed;

  private Scp(String user, String pass, String host){
    this.user = user;
    this.pass = pass;
    this.host = host;
  }

  public static Scp getScpUtilsInstance(String user, String pass, String host){

    if(scpInstance == null) {
      synchronized(Scp.class) {
        if(scpInstance == null) {
          scpInstance = new Scp(user,pass,host);
        }
      }
    }
    return scpInstance;
  }


  public void connect(){
    connection = new Connection(host);
    try {
      connection.connect();
      isAuthed = connection.authenticateWithPassword(user,pass);
      // scp 连接
      scpClient = connection.createSCPClient();
    } catch (IOException e) {
      e.printStackTrace();
      close();
    }
  }

  public void close(){
    connection.close();
    sftPv3Client.close();
  }

  public boolean getIsAuthed(){
    return isAuthed;
  }

  // 拷贝文件到服务器
  public void putFile(String filePath,String aimPath){
    try {
      if(scpClient != null){
        scpClient.put(filePath,aimPath);
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

 

}
Scp scp = Scp.getScpUtilsInstance("root","psd","192.168.199.3");
              scp.connect();
              if(scp.getIsAuthed()){
                for(int i = 0;i<data.getLayers();i++){
                  scp.putFile(SlcParser.pngDirectory+"/"+i+".png","/home");
                }
              }

SFTP 删除文件

  private SFTPv3Client sftPv3Client;
  
  sftPv3Client = new SFTPv3Client(connection);

  public void rmFile(String filePath){
      try {
        if(sftPv3Client != null){
          sftPv3Client.rm(filePath);
        }
      } catch (IOException e) {
        e.printStackTrace();
      }
    }


Scp scp = Scp.getScpUtilsInstance("root","psd","192.168.199.3");
        scp.connect();
        if(scp.getIsAuthed()){
          for(int i = 0;i<10;i++){
            scp.rmFile("/home/"+i+".png");
          }
        }

以上就是如何在Android 中实现scp操作的详细内容,更多关于在Android 中实现scp操作的资料请关注脚本之家其它相关文章!

相关文章

  • android dialog根据弹窗等级排序显示的示例代码

    android dialog根据弹窗等级排序显示的示例代码

    这篇文章主要介绍了android dialog根据弹窗等级排序显示,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • Kotlin RecyclerView滚动控件详解

    Kotlin RecyclerView滚动控件详解

    RecyclerView是Android一个更强大的控件,其不仅可以实现和ListView同样的效果,还有优化了ListView中的各种不足。其可以实现数据纵向滚动,也可以实现横向滚动(ListView做不到横向滚动)。接下来讲解RecyclerView的用法
    2022-12-12
  • Android编程操作联系人的方法(查询,获取,添加等)

    Android编程操作联系人的方法(查询,获取,添加等)

    这篇文章主要介绍了Android编程操作联系人的方法,包括针对联系人的查询,获取,添加等操作,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-01-01
  • Android无需root实现apk的静默安装

    Android无需root实现apk的静默安装

    这篇文章主要介绍了Android无需root实现apk的静默安装 的相关资料,需要的朋友可以参考下
    2016-01-01
  • Flutter 利用CustomScrollView实现滑动效果

    Flutter 利用CustomScrollView实现滑动效果

    我们可以使用ListView将几个GridView组合在一起实现了不同可滑动组件的粘合,但是这里必须要设置禁止 GridView 的滑动,防止多个滑动组件的冲突。这种方式写起来不太方便,事实上 Flutter 提供了 CustomScrollView 来粘合多个滑动组件,并且可以实现更有趣的滑动效果。
    2021-06-06
  • Android开发之软键盘用法实例分析

    Android开发之软键盘用法实例分析

    这篇文章主要介绍了Android开发之软键盘用法,实例分析了Android软键盘的实现技巧,需要的朋友可以参考下
    2015-05-05
  • Android设置Activity背景为透明style的简单方法(必看)

    Android设置Activity背景为透明style的简单方法(必看)

    下面小编就为大家带来一篇Android设置Activity背景为透明style的简单方法(必看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • Android中图片占用内存的深入分析

    Android中图片占用内存的深入分析

    我们在日常开发中应该经常思考这些问题,图片占用内存跟哪些东西有关?跟手机有关系么?这篇文章主要给大家介绍了关于Android中图片占用内存的相关资料,需要的朋友可以参考下
    2022-01-01
  • mac系统下载、安装、使用Java8教程

    mac系统下载、安装、使用Java8教程

    这篇文章主要介绍了在Mac OS上如何下载安装Java8以及使用java8的基本方法,包括查看所安装Java版本的方法,需要的朋友可以参考下
    2017-10-10
  • Android中XML的基本操作(增、删、改、查)

    Android中XML的基本操作(增、删、改、查)

    这篇文章主要介绍了Android中XML的基本操作(增、删、改、查)的相关资料,需要的朋友可以参考下
    2017-04-04

最新评论