FTPS:
一种多传输协议,相当于加密版的FTP。当你在FTP服务器上收发文件的时候,你面临两个风险。第一个风险是在上载文件的时候为文件加密。第二个风险是,这些文件在你等待接收方下载的时候将停留在FTP服务器上,这时你如何保证这些文件的安全。你的第二个选择(创建一个支持SSL的FTP服务器)能够让你的主机使用一个FTPS连接上载这些文件。这包括使用一个在FTP协议下面的SSL层加密控制和数据通道。一种替代FTPS的协议是安全文件传输协议(SFTP)。这个协议使用SSH文件传输协议加密从客户机到服务器的FTP连接。
FTPS是在安全套接层使用标准的FTP协议和指令的一种增强型FTP协议,为FTP协议和数据通道增加了SSL安全功能。FTPS也称作“FTP-SSL”和“FTP-over-SSL”。SSL是一个在客户机和具有SSL功能的服务器之间的安全连接中对数据进行加密和解密的协议。
当使用FTPS与服务器连接时,有两种方法:显式和隐式。
简单来说:
显示又叫FTPES, FTPS客户端跟FTPS服务器必须显式使用一种同样的加密方法。如果客户端不要求加密,服务器也允许非加密通讯。
隐式 就是客户端直接通过TSL/SSL加密与服务器联系,如果服务器无响应,则停止通讯。
FTP4J 支持 FTPS/FTPES secured connection,其中使用FTPES还是原来的21端口,使用FTPS使用的是990端口,使用SFTP的是22端口,以下说的不包含SFTP内容。
可以查看Serv-U域详细信息查看服务邦定的端口,默认情况下是以下内容:
如果我们使用flashfxp进行连接,则使用不同连接方式时要进行选择,普通FTP连接使用21端口,不用选择:
我们通过21端口进行显示FTPS连接:
Java代码 收藏代码
package test;
import it.sauronsoftware.ftp4j.FTPClient;
import java.security.SecureRandom;
import java.security.cert.X509Certificate;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
/**
* 通过21端口进行显示FTPS连接
* @说明
* @author cuisuqiang
* @version 1.0
* @since
*/
public class Ftp4jTest {
public static void main(String[] args) {
try {
TrustManager[] trustManager = new TrustManager[] { new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(X509Certificate[] certs,
String authType) {
}
public void checkServerTrusted(X509Certificate[] certs,
String authType) {
}
} };
SSLContext sslContext = null;
sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, trustManager, new SecureRandom());
SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
FTPClient client = new FTPClient();
client.setSSLSocketFactory(sslSocketFactory);
client.setSecurity(FTPClient.SECURITY_FTPES);
client.connect("192.168.1.122", 21);
client.login("123", "123123");
System.out.println(client.toString());
System.out.println(client.currentDirectory());
} catch (Exception e) {
e.printStackTrace();
}
}
}
代码会打印连接信息和当前目录
使用990端口进行隐式FTPS连接:
Java代码 收藏代码
package test;
import it.sauronsoftware.ftp4j.FTPClient;
import java.security.SecureRandom;
import java.security.cert.X509Certificate;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
/**
* 进行隐式FTPS连接
* @说明
* @author cuisuqiang
* @version 1.0
* @since
*/
public class Ftp4jTest {
public static void main(String[] args) {
try {
TrustManager[] trustManager = new TrustManager[] { new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(X509Certificate[] certs,
String authType) {
}
public void checkServerTrusted(X509Certificate[] certs,
String authType) {
}
} };
SSLContext sslContext = null;
sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, trustManager, new SecureRandom());
SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
FTPClient client = new FTPClient();
client.setSSLSocketFactory(sslSocketFactory);
client.setSecurity(FTPClient.SECURITY_FTPS);
client.connect("192.168.1.122", 990);
client.login("123", "123123");
System.out.println(client.toString());
System.out.println(client.currentDirectory());
} catch (Exception e) {
e.printStackTrace();
}
}
}
打印内容相同
进行显示还是隐式连接的最大不同是指定了连接方式:
这个情况官方也给出了详细的说明:
The ftp4j library supports both FTPS (FTP over implicit TLS/SSL) and FTPES (FTP over explicit TLS/SSL).
The setSecurity() method can be used to turn on the feature:
client.setSecurity(FTPClient.SECURITY_FTPS); // enables FTPS
client.setSecurity(FTPClient.SECURITY_FTPES); // enables FTPES
Both methods must be called before connecting the remote server.
If the security is set to SECURITY_FTPS, the default port used by the connect() method changes to 990
请您到ITEYE网站看原创,谢谢!
http://cuisuqiang.iteye.com/ !
分享到:
相关推荐
在这个主题中,我们将深入探讨如何使用JSCH库来实现FTP的文件上传、下载和删除功能。 JSCH是一个纯Java实现的SSH2库,它允许Java程序执行SCP(Secure Copy)、SFTP(Secure File Transfer Protocol)和FTP通过SSH...
在这个场景中,我们看到三个不同的压缩包文件,它们可能包含了实现FTP客户端功能的库或工具:ftp4j-1.5.1.zip、j-ftp-1.52.tar.gz以及jsch-0.1.43.zip。 首先,`ftp4j-1.5.1.zip` 是一个Java库,用于开发FTP客户端...
ChannelSftp类是JSch实现SFTP的核心类,它封装了SFTP协议的所有操作方法。例如,put()用于文件上传,get()用于文件下载,cd()用于进入指定目录,ls()用于获取指定目录下的文件列表,rename()用于重命名文件等。利用...
Java中可以使用Apache Commons Net库来实现FTP操作。首先,需要在项目中引入Apache Commons Net的依赖。接着,可以创建一个`FTPClient`实例,设置服务器地址、端口、用户名和密码,然后连接到FTP服务器。文件上传和...
JSch - Java 实现的 SFTP(文件上传详解篇) JSch 是 Java Secure Channel 的缩写,JSch 是一个 SSH2 的纯 Java ...ChannelSftp 类是 JSch 实现 SFTP 核心类,提供了许多有用的方法用于文件上传、下载、目录操作等。
要使用这个库,开发者需要将"jsch.jar"添加到项目的类路径中,并按照JSCH的API文档编写相应的代码来实现SFTP操作。 总结来说,JSCH是Java平台上的一个强大工具,它使开发人员能够方便地集成SSH2协议,尤其是实现...
这里我们将深入探讨Java中实现FTP操作的核心知识点。 首先,Java通过`commons-net`库提供了对FTP的支持,这个库包含了`FTPClient`类,它是处理FTP连接、文件传输和FTP命令的主要工具。`FTPClient`类是Apache ...
JSCH,全称为Java Simple SSH,是一个开源的Java库,用于实现SSH2协议,以便在Java应用程序中进行安全的远程文件传输、shell访问以及端口转发。JSCH库广泛应用于需要与支持SSH2的服务器进行交互的场景,例如SFTP...
6. **异常处理**:FTP操作可能会遇到各种异常,如网络连接失败、认证错误等,因此必须进行适当的异常处理。例如,可以捕获`IOException`、`FTPException`等,并根据具体情况进行错误提示或重试操作。 7. **安全考虑...
在本项目中,“多线程实现ftp客户端程序”是核心主题,它涉及到如何利用多线程技术来构建一个功能丰富的FTP(File Transfer Protocol)客户端。FTP是一种网络协议,用于在互联网上进行文件传输,而多线程的引入则...
标题中的"com.jcraft.jsch_0.1.31.jar"和"commons-net-3.2.jar"是两个在JAVA编程环境中用于实现FTP(File Transfer Protocol)功能的重要库文件,它们是Java开发者进行FTP通信时经常会用到的依赖。 首先,`...
JavaScript SSH (JSch) 是一个Java库,它允许开发者在Java应用程序中实现Secure File Transfer Protocol (SFTP)、Secure Copy (SCP) 和 SSH2 (Secure Shell) 的功能。`jsch-0.1.53.zip` 包含的是JSch库的0.1.53版本...
本文将详细介绍如何使用Java实现FTP上传功能,并探讨相关知识点。 首先,要进行FTP操作,我们需要一个Java FTP客户端库。Java标准库并不直接支持FTP,但提供了`java.net.Socket`类,可以通过它构建低级别的FTP连接...
本文将深入探讨如何使用Java实现FTP的上传和下载功能,以及如何处理多个FTP连接进行互传。 首先,我们需要了解Java中的`java.net`和`org.apache.commons.net.ftp`这两个库。`java.net`是Java标准库的一部分,提供了...
- 代码中未明确指出使用的FTP库,但通常Java开发者会使用Apache Commons Net库或者JSch库来实现FTP功能。这些库提供了丰富的FTP操作接口,简化了FTP操作的实现。 总的来说,Java实现FTP功能涉及到网络通信、文件I/...
在Java中实现FTP功能,通常会使用第三方库如Apache Commons Net或JSch。这里提到的"ftpClient"可能指的是Apache Commons Net库中的`FTPClient`类,它提供了一系列API来执行FTP操作,如登录、上传、下载、列出目录等...
3. **SCP(Secure Copy)**:JSch也提供了SCP命令的功能,可以实现文件和目录的复制操作。 4. **端口转发**:SSH的端口转发功能允许将本地端口上的流量转发到远程主机,可以用来绕过防火墙限制,或者安全地访问远程...
标题中的“用Java实现FTP服务器”表明我们要讨论的是如何使用Java编程语言来构建一个FTP(File Transfer Protocol)服务器。FTP是一种用于在互联网上传输文件的标准协议。Java由于其跨平台性和丰富的类库,成为了...
本篇文章将详细探讨如何使用Java通过SFTP模式实现FTP的文件上传、下载和删除功能。 一、SFTP简介 SFTP与传统的FTP不同,FTP在明文传输数据,存在安全隐患,而SFTP则利用SSH提供的加密机制,确保数据在传输过程中的...
`FTPClient`类封装了所有FTP操作,如`connect()`, `login()`, `changeWorkingDirectory()`, `listFiles()`, `storeFile()`, `retrieveFile()`等。 为了实现FTP数据浏览,我们需要解析服务器返回的目录列表,这通常...