如何在Android 中实现scp操作
短信预约 -IT技能 免费直播动态提醒
本文简单介绍用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操作的资料请关注编程网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341