package examples.ftpServer; import <a href="http://lib.csdn.net/base/javase" class='replace_word' title="Java SE知识库" target='_blank' style='color:#df3434; font-weight:bold;'>Java</a>.io.File; import org.apache.ftpserver.FtpServer; import org.apache.ftpserver.FtpServerFactory; import org.apache.ftpserver.ftplet.FtpException; import org.apache.ftpserver.listener.ListenerFactory; import org.apache.ftpserver.ssl.SslConfigurationFactory; import org.apache.ftpserver.usermanager.PropertiesUserManagerFactory; public class StartFTPS { /** * 通过程序启动FTP with SSL认证,以Apache FTPServer为例 * @param args * @throws FtpException */ public static void main(String[] args) throws FtpException { // TODO Auto-generated method stub FtpServerFactory serverFactory = new FtpServerFactory(); ListenerFactory factory = new ListenerFactory(); // set the port of the listener factory.setPort(2221); // define SSL configuration SslConfigurationFactory ssl = new SslConfigurationFactory(); ssl.setKeystoreFile(new File("F:/FTP/ftpserver-1.0.5/apache-ftpserver-1.0.5/res/kserver.keystore")); ssl.setKeystorePassword("123456"); // ssl.setTruststoreFile(new File("F:/FTP/ftpserver-1.0.5/apache-ftpserver-1.0.5/res/tserver.keystore")); // ssl.setKeystorePassword("123456"); // set the SSL configuration for the listener factory.setSslConfiguration(ssl.createSslConfiguration()); factory.setImplicitSsl(true); // replace the default listener serverFactory.addListener("default", factory.createListener()); PropertiesUserManagerFactory userManagerFactory = new PropertiesUserManagerFactory(); userManagerFactory.setFile(new File("F:/FTP/ftpserver-1.0.5/apache-ftpserver-1.0.5/res/conf/users.properties")); serverFactory.setUserManager(userManagerFactory.createUserManager()); // start the server FtpServer server = serverFactory.createServer(); server.start(); } }
然后是客户端连接FTPS
package examples.ftpClient; import java.io.FileInputStream; import java.io.IOException; import java.io.PrintWriter; import java.security.KeyStore; import javax<a href="http://lib.csdn.net/base/dotnet" class='replace_word' title=".NET知识库" target='_blank' style='color:#df3434; font-weight:bold;'>.NET</a>.ssl.KeyManager; import javax<a href="http://lib.csdn.net/base/dotnet" class='replace_word' title=".NET知识库" target='_blank' style='color:#df3434; font-weight:bold;'>.Net</a>.ssl.KeyManagerFactory; import javax.net.ssl.TrustManager; import javax.net.ssl.TrustManagerFactory; import org.apache.commons.net.PrintCommandListener; import org.apache.commons.net.ftp.FTPSClient; public class ConnectFTPS { private static FTPSClient ftpsClient; private static final String trust_path = "F:/FTP/ftpserver-1.0.5/apache-ftpserver-1.0.5/res/kclient.keystore"; private static final String trust_pw = "123456"; private static final String key_path = "F:/FTP/ftpserver-1.0.5/apache-ftpserver-1.0.5/res/tclient.keystore"; private static final String key_pw = "123456"; private static final String serverIP = "127.0.0.1"; private static final int serverPort = 2221; private static final int defaultTimeout = 10000; private static final int soTimeout = 900000; private static final int dataTimeout = 5000; /** * <a href="http://lib.csdn.net/base/softwaretest" class='replace_word' title="软件测试知识库" target='_blank' style='color:#df3434; font-weight:bold;'>测试</a>连接FTP With SSL,以Apache FTPServer为例 * @param args * @throws Exception */ public static void main(String[] args) throws Exception { if (!connect("active")) { connect("passive"); } FileInputStream fs = new FileInputStream(trust_path); System.out.println("storeFile: " + ftpsClient.storeFile("test_file", fs)); fs.close(); ftpsClient.disconnect(); } /** * 登陆FTP * @param active * @return * @throws Exception */ private static boolean connect(String active) throws Exception { ftpsClient = new FTPSClient(true); ftpsClient.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out))); ftpsClient.setKeyManager(getKeyManager()); //ftpsClient.setTrustManager(getTrustManager()); ftpsClient.setDefaultTimeout(defaultTimeout); ftpsClient.connect(serverIP, serverPort); System.out.println("已经连接FTP"); ftpsClient.setSoTimeout(soTimeout); ftpsClient.getReplyCode(); ftpsClient.execPBSZ(0); ftpsClient.execPROT("P"); ftpsClient.login("admin", "admin"); ftpsClient.changeWorkingDirectory("/"); ftpsClient.setDataTimeout(dataTimeout); if (active.equalsIgnoreCase("active")) { ftpsClient.enterLocalActiveMode(); } else { ftpsClient.enterLocalPassiveMode(); } System.out.println("已经登陆FTP"); return testLink(); } /** * 遍历FTP文件 * @return */ private static boolean testLink() { long t1 = System.currentTimeMillis(); try { System.out.println("List file length:" + ftpsClient.listFiles().length); } catch (IOException e) { System.out.println(e.getMessage()); long t2 = System.currentTimeMillis(); long t = (t2 - t1) / 1000; System.out.println("t: " + t); try { ftpsClient.disconnect(); } catch (IOException e1) { e1.printStackTrace(); } return false; } return true; } private static KeyManager getKeyManager() throws Exception { KeyStore key_ks = KeyStore.getInstance("JKS"); key_ks.load(new FileInputStream(key_path), key_pw.toCharArray()); KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); kmf.init(key_ks, key_pw.toCharArray()); KeyManager[] km = kmf.getKeyManagers(); System.out.println("km len: " + km.length); return km[0]; } private static TrustManager getTrustManager() throws Exception { KeyStore trust_ks = KeyStore.getInstance("JKS"); trust_ks.load(new FileInputStream(trust_path), trust_pw.toCharArray()); TrustManagerFactory tf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); tf.init(trust_ks); TrustManager[] tm = tf.getTrustManagers(); System.out.println("tm len: " + tm.length); return tm[0]; } }
相关推荐
利用IIS创建FTP服务 并提供测试
ftp服务器创建用户及其权限设置的演示说明(自动保存的).pdf
C#FTP操作:上传、下载、在服务器上创建文件夹、删除服务器上的文件
1.操作简单,只需将下载包进行解压,点击exe就可以安装; 2.填写你的ip,端口; 3.设置你的用户名和密码; 4.新建文件夹,将你的共享文件放入;别人只要知道你的密码就可以访问;
详解ftp创建文件权限问题 一、问题 有一个这样的需求,admin为一个Linux为其FTP应用创建的一个有权限限制的用户,通过admin用户可以进行登录FTP服务,登录FTP服务后,创建文件夹,该文件夹的用户和用户组都是admin,...
同时对局域网中部署FTP服务的主机进行监控,能够快速得知哪台具有FTP的主机在提供服务。下图该局域网的拓扑图。 图1局域网拓扑 实现MAC地址收集和FTP服务监控具体操作内容如下: 1)部署FTP服务器 使用dnf命令安装...
使用 C# 创建一个 FTP 服务器,供大家一起共同分享学习。
使用node.js 创建一个自定义的FTP服务器, 这里只是实现极少一部分! 主要是演示 ftp-srv 的文件系统(FileSystem)的部分用法!
本文档主要实现FTP服务器的相关知识点介绍,同时在Centos系统下实现安装
通过java程序来实现将本地文件上传到ftp服务器的功能
创建与管理FTP服务 FTP简介 安装与测试FTP站点 配置FTP服务器 创建用户隔离的FTP站点 ftp服务器ppt全文共38页,当前为第2页。 FTP简介 FTP(File Transport Protocol,文件传输协议)用于实现客户端与服务器之间的...
创建FTP服务器
介绍一个php的FTP操作类,通过ftp服务器登录,上传文件到本地目录,如果目录不存在则重新创建,移动文件,复制文件,删除文件,完成后关闭ftp文件。
麒麟V10服务器搭建FTP服务
Linux虚拟机创建Ftp服务器文档
详细介绍如何在winxp下如何建立ftp服务器。
Web和FTP服务器创建好之后,还需要进行适当的管理才能使用户的信息安全有效的被其他访问者访问。Web和FTP 服务器的管理基本相同,包括一些常规管理和安全管理,下面对其中的七个主要方面进行介绍。
本地创建FTP服务器工具.是一个很好的工具.菜鸟专用.
通过使用Serv-U,用户能够将任何一台PC 设置成一个FTP 服务器,这样,用户或其他使用者就能够使用FTP 协议,通过在同一网络上的任何一台PC与FTP 服务器连接,进行文件或目录的复制,移动,创建,和删除等。...
Linux 搭建 FTP 服务器实现匿名上传 ...搭建 FTP 服务器实现匿名上传的功能需要安装 vsftpd 服务器包、创建供匿名用户下载的目录、配置 vsftpd 服务器使其允许匿名用户上传文件,最后重启 vsftpd 服务器以使配置生效。