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

How to connect to an FTP server from an existing connection to Unix server?

目前我正在使用Reflection for Unix and OpenVMS。我连接到 Unix 服务器。连接后,我与目标服务器建立了一个新的 FTP 连接。这是控制台 window 的样子:

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 

我试图以编程方式复制相同的步骤,但对这个 "double connection" 感到困惑。我只能连接到 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 ?") 

如何从现有 "session/connection" 连接到单独的 FTP?

您通常为此使用 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);