如何在Android 中实现scp操作

本文简单介绍用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 中实现scp操作 的全部内容, 来源链接: utcz.com/p/243307.html

回到顶部