如何在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>
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 Studio 报错“app:processDebugResources"解决方法
这篇文章主要介绍了Android Studio 报错“app:processDebugResources"解决方法的相关资料,需要的朋友可以参考下2017-07-07
Eclipse打开时“发现了以元素''d:skin''”开头的无效内容。此处不应含有子元素的解决方法
这篇文章主要介绍了Eclipse打开时“发现了以元素'd:skin'”开头的无效内容。此处不应含有子元素的解决方法,涉及Android sdk中devices.xml文件的修改,需要的朋友可以参考下2016-01-01
Android中Service与Activity之间通信的几种方式
本篇文章主要介绍了Android中Service与Activity之间通信的几种方式,Activity主要负责前台页面的展示,Service主要负责需要长期运行的任务,具有一定的参考价值,有兴趣的可以了解一下。2017-02-02
Android搜索框(SearchView)的功能和用法详解
这篇文章主要为大家详细介绍了Android搜索框SearchView的功能和用法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-05-05


最新评论