如何使用Apache SSHD进入被动模式

时间:2015-09-01 05:29:24

标签: java ftp apache-mina sshd

我有以下代码使用Apache Mina SSHD创建远程ChannelSubsystem(FTP客户端):

org.apache.sshd.client.channel.ChannelSubsystem c = session.createSubsystemChannel("sftp");

int authState = ClientSession.WAIT_AUTH;

while ((authState & ClientSession.WAIT_AUTH) != 0) {

    System.out.println("authenticating...");

    authFuture.addListener(new SshFutureListener<AuthFuture>()
    {
        @Override
        public void operationComplete(AuthFuture arg0)
        {
            System.out.println("Authentication completed with " + ( arg0.isSuccess() ? "success" : "failure"));
        }
    });

    authState = session.waitFor(ClientSession.WAIT_AUTH | ClientSession.CLOSED | ClientSession.AUTHED, 0);
}

if ((authState & ClientSession.CLOSED) != 0) {
    System.err.println("error");
    System.exit(-1);
}

OpenFuture openFuture = c.open().await();

如何通过ChannelSubsystem向远程FTP站点发送命令进入被动模式?

1 个答案:

答案 0 :(得分:1)

您使用SSH / SFTP连接,而不是FTP。

SFTP中没有类似主动/被动模式。

主动/被动模式与FTP协议区分开来,因为它使用单独的数据连接。在活动模式下,服务器启动数据连接。在被动模式下,客户端启动连接 有关详细信息,请参阅FTP connection modes上的文章。

SFTP中没有单独的数据连接,因此没有主动/被动模式的原因。