如何在Android 中实现scp操作

时间:2021-05-19

本文简单介绍用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 TargetFilescp -r user@host:directory/SourceFolder TargetFolder// 从主机复制文件scp user@host:directory/SourceFile TargetFilescp -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操作的资料请关注其它相关文章!

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章