如何从现有连接到Unix服务器连接到FTP服务器?

时间:2015-09-22 15:59:28

标签: java unix ssh ftp jsch

目前我正在使用Reflection for Unix and OpenVMS。我连接到Unix服务器。连接后,我建立到目标服务器的新FTP连接。以下是控制台窗口的外观:

login: xxx 
Password : xxx 
// Now I'm connected to UNIX
// Next I am connecting to that FTP 
ftpLogin@hostName :/whatever/.../ $ ftp someftp.example.com 
Conencted 
Name: myLogin 
Password: 
XXX 
Login OK 

我尝试以编程方式复制相同的步骤,但却对这种“双连接”事情感到困惑。我只能连接到Unix,但后来我不知道如何继续。

JSch jsch = new JSch();
Session session = jsch.getSession(user, host, port);
    session.setPassword(password);
    session.setConfig("StrictHostKeyChecking", "no");
System.out.println("Establishing Connection...");
session.connect(); 

现在我已连接到Unix,如何继续执行此步骤ftpLogin@hostName :/whatever/.../ $ ftp someftp.example.com

我想我可能只需要发送一个命令,比如

sftpChannel.setCommand("ftpLogin@hostName :/whatever/.../ $ ftp someftp.example.com ?") 

如何从现有的“会话/连接”连接到单独的FTP?

1 个答案:

答案 0 :(得分:1)

您通常会使用local port forwarding

在JSch中,连接后,请致电setPortForwardingL

int ftpPort = session.setPortForwardingL(0, "someftp.example.com", 21);

然后将本地FTP客户端(例如FTPClient from Apache Commons)连接到localhost:ftpPort

FTPClient ftp = new FTPClient();
ftp.connect("localhost", ftpPort);
ftp.login("myLogin", password);