sshj - SSHv2 library for Java
Maven工程依赖
<dependency>
<groupId>com.hierynomus</groupId>
<artifactId>sshj</artifactId>
<version>0.23.0</version>
</dependency>
示例
1. 从SFTP 获取文件返回输出流
public static void main(String[] args) throws IOException {
final SSHClient ssh = new SSHClient();
try {
HostKeyVerifier hostKeyVerifier = new HostKeyVerifier()
{
@Override
public boolean verify(String arg0, int arg1, PublicKey k) {
System.out.println(arg0);
System.out.println(arg1);
System.out.println(k);
// TODO Auto-generated method stub
System.out.println("###" + SecurityUtils.getFingerprint(k));
// return SecurityUtils.getFingerprint(k).equals("27:6d:36:6c:49:a4:0d:5b:fb:f8:19:45:9b:43:52:1f");
return true;
}
};
ssh.addHostKeyVerifier(hostKeyVerifier);
ssh.loadKnownHosts();
ssh.connect(host, port);
ssh.authPassword(username, password);
System.out.println(ssh.isAuthenticated());
final SFTPClient sftp = ssh.newSFTPClient();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
try {
InMemoryDestFile inMemoryDestFile = new InMemoryDestFile() {
@Override
public OutputStream getOutputStream() throws IOException {
return outputStream;
}
};
long size = sftp.size("/files/05_20180125.txt");
System.out.println("Size:" + size);
List<RemoteResourceInfo> ls = sftp.ls("/files/");
for(RemoteResourceInfo rri : ls) {
if(rri.getName().equals("000020000000000005_20180125.txt")) {
System.out.println("Meach Success");
sftp.get("/files/000020000000000005_20180125.txt", inMemoryDestFile);
} else {
}
System.out.println("路径:" + rri.getPath() + " P " + rri.getParent() + " # " + rri.getAttributes());
}
} finally {
outputStream.close();
sftp.close();
}
} finally {
ssh.disconnect();
}
}