① java ftp 和 sftp的区别
FTP是文件传输协议。在网站上,如果你想把文件和人共享,最便捷的方式莫过于把文件上传到FTP服务器上,其他人通过FTP客户端程序来下载所需要的文件。 FTP进行文件传输需要通过端口进行。一般所需端口为: 1. 控制链路—TCP端口21。控制器端。用于发送指令给服务器以及等待服务器响应。 2. 数据链路---TCP端口20。数据传输端口。用来建立数据传输通道的。主要用来从客户向服务器发送一个文件、从服务器向客户发送一个文件、从服务器向客户发送文件或目录列表。 FTP为了适应不同的网络环境,支持主动连接和被动连接两种模式。这两种模式都主要针对数据链路进行的,跟控制链路无关。 FTP的安全隐患: 一、FTP服务器软件漏洞。 二、明文口令。 三、FTP旗标。 四、通过FTP服务器进行端口扫描。 五、数据劫持。 FTP的安全策略: 一、使用较比安全的系统和FTP服务软件。 二、使用密文传输用户名和口令。 三、更改服务软件的旗标。 四、加强协议安全性。 SFTP是Secure File Transfer Protocol的缩写,是安全文件传送协议。可以为传输文件提供一种安全的加密方法。跟ftp几乎语法功能一样。 SFTP是SSH的一部分,是一种传输档案至Blogger服务器的安全方式。它...
② 用java实现sftp的客户端,channel.connect()的时候,抛出异常,收到信息过长,然后就没连上。怎么回事
首先,不太明确你要问什么?
J2EE是java企业级应用,它里面关于安全方面的东西很多!
权限管理?信息安全?授权服务?访问控制?数据机密性?
要是你想全部都了解!
在这里提问是不行的!太庞杂了!
如果 你要问的是 java ftp传输过程中的一些安全注意事项!
这里建议 你使用 apache的开源项目。他们把基于java的ftp操作都封装好了!
安全相关都有保证。
我下面可以给你复制一段 ftp下载远程终端的java代码!你可以参考一下!
需要下载 org.apache.commons.net包
可以到 网站下载!
/**
* Description: 从FTP服务器下载文件
* @param ip FTP服务器的ip地址
* @param port FTP服务器端口,默认为:21
* @param username FTP登录账号
* @param password FTP登录密码
* @param remotePath FTP服务器上的相对路径
* @param fileName 要下载的文件名
* @param localPath 下载后保存到本地的路径
* @return
*/
public static boolean downFile(String ip, int port,String username, String password, String remotePath,String fileName,String localPath,String localfile) {
boolean success = false;
FTPClient ftp = new FTPClient();
try {
int reply;
ftp.connect(ip, port);
//处理中文转码操作
ftp.setControlEncoding("GBK");
FTPClientConfig conf = new FTPClientConfig(FTPClientConfig.SYST_NT);
conf.setServerLanguageCode("zh");
ftp.login(username, password);//登录
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return success;
}
ftp.changeWorkingDirectory(remotePath);//转移到FTP服务器目录
FTPFile[] fs = ftp.listFiles();
for(int i = 0; i < fs.length; i++){
FTPFile ff = fs[i];
if(ff.getName().equals(fileName)){
String localfilename = localfile;//按规则设置文件名这里你要下载文件,可以自己定义下载之后的文件名
File localFile = new File(localPath+File.separator+localfilename);
OutputStream is = new FileOutputStream(localFile);
//此处retrieveFile的第一个参数由GBK转为ISO-8859-1编码。否则下载后的文件内容为空。
ftp.retrieveFile(new String(ff.getName().getBytes("GBK"),"ISO-8859-1"), is);
is.close();
}
}
ftp.logout();
success = true;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
}
}
}
return success;
}
③ 用java实现FTP需要导入什么包,导入哪里呢,能不能改个包
有二个种FTP方式:ftp和sftp
ftp的包:commons-net-3.3.jar
sftp包:com.jcraft.jsch_0.1.31.jar
④ jsch实现java sftp上传,在非root用户下出现permission dined异常,
这个正常,应该是你当前上传用户在上传位置没有权限造成的,权限应该在服务器端修改
⑤ java sftp上传文件 ,在cd时 空指针异常,服务器上path存在
try {
sftp.cd(directory);
} catch (SftpException sException) {
if (sftp.SSH_FX_NO_SUCH_FILE == sException.id) {// 如果文件夹不存在,则进行新建
sftp.mkdir(directory);
sftp.cd(directory);
}
}
用这个就可以解决sftp服务目录不存在问题
⑥ java 应用程序在linux 上怎么部署 运行
JAVA程序在开发完成后,需要部署到服务器,如果是WEB项目,需要部署到WEB服务器,否则部署到应用服务器。
JAVA是跨平台的编程语言,服务器的操作系统可以是Windows、Linux或者其它,下面将在RedHat6操作系统下,详细说明JAVA程序在WEB服务器和应用服务器上的部署情况。
1、JAVA程序部署在应用服务器
(1) JAVA程序HelloWorld 在Redhat6上部署的目录结构
bin : 存放shell脚本run.sh
conf :存放配置文件log4j.properties
lib :存放JAR包HelloWorld.jar、log4j-1.2.16.jar
logs:存放程序运行日志文件log.log
(2)编写测试类HelloWorld.java 并打成JAR包HelloWorld.jar
package com.test;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class HelloWorld {
private static Logger log = Logger.getLogger(HelloWorld.class);
public static void main(String[] args) {
try{
//log4j.properties变量的值在脚本bin/run.sh 中读取
String config = System.getProperty("log4j.properties");
if (config != null) {
PropertyConfigurator.configure(config);
}
log.info("HelloWorld");
Thread thread = new Thread(){
public void run(){
while(true){
try {
Thread.sleep(5*1000);
log.info("每隔5秒打印一下日志");
} catch (InterruptedException e) {
e.printStackTrace();
log.error(e.getMessage());
}
}
}
};
thread.run();
} catch (Exception e) {
log.error("[X]启动失败:"+e.getMessage());
System.exit(1);
}
}
}
⑦ java前端下载完打开压缩文件头部错误
java前端下载完打开压缩文件头部错误解决办法:
1、将本地数据备份成zip文件。
2、将备份的zip文件通过sftp上传到文件服务器。
3、将文件服务器上的zip文件下载到运行服务器。
4、将下载的zip文件解压到本地(文件大小超过50KB时报文件被损坏)。