如何从现有的连接到Unix服务器连接到FTP服务器? [英] How to connect to an FTP server from an existing connection to Unix server?

查看:465
本文介绍了如何从现有的连接到Unix服务器连接到FTP服务器?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

目前我正在使用 Reflection for Unix和OpenVMS 。我连接到一个Unix服务器。一旦连接,我建立一个新的FTP连接到目标服务器。以下是控制台窗口的样子:


$ b

  login:xxx 
Password:xxx
//现在我连接到UNIX
//下一步我连接到该FTP
ftpLogin @ hostName:/ whatever /.../ $ ftp someftp.example.com
Conencted
名称:myLogin
密码:
XXX
登录OK






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

  JSch jsch = new JSch(); 
会话会话= jsch.getSession(user,host,port);
session.setPassword(password);
session.setConfig(StrictHostKeyChecking,no);
System.out.println(建立连接...);
session.connect();

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



我想我可能只需要发送一个命令,就像

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

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

为此,您通常使用本地端口转发



在JSch中,连接后,调用 setPortForwardingL

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

然后连接一个本地FTP客户端(例如 FTPClient 来自Apache Commons )到 localhost:ftpPort

  FTPClient ftp = new FTPClient(); 
ftp.connect(localhost,ftpPort);
ftp.login(myLogin,密码);


Currently I am using Reflection for Unix and OpenVMS. I connect to a Unix server. Once connected, I establish a new FTP connection to the target server. Here is how the console window look like:

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 


I tried to replicate the same steps programmatically, but got confused with this "double connection" thing. I was able to connect to Unix only, but then I don't know how to proceed.

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(); 

Now that I am connected to Unix, how do I proceed with this step ftpLogin@hostName :/whatever/.../ $ ftp someftp.example.com?

I think I might only need to send a command, something like

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

How can I connect to a separate FTP from an existing "session/connection"?

解决方案

You typically use the local port forwarding for this.

In JSch, after you connect, call the setPortForwardingL:

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

And then connect a local FTP client (e.g. the FTPClient from Apache Commons) to the localhost:ftpPort:

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

这篇关于如何从现有的连接到Unix服务器连接到FTP服务器?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆