目前我正在使用Reflection for Unix和OpenVMS 。 我连接到一个Unix服务器。 一旦连接,我build立一个新的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?
您通常使用本地端口转发 。
在JSch中,连接之后,调用setPortForwardingL
:
int ftpPort = session.setPortForwardingL(0, "someftp.example.com", 21);
然后将本地FTP客户端(例如Apache Commons的 FTP客户端)连接到localhost:ftpPort
:
FTPClient ftp = new FTPClient(); ftp.connect("localhost", ftpPort); ftp.login("myLogin", password);