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

标签 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 站点发送命令以进入被动模式?

最佳答案

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

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


主动/被动模式与FTP协议(protocol)是有区别的,因为它使用单独的数据连接。在主动模式下,服务器发起数据连接。在被动模式下,客户端发起连接。
请参阅我关于 FTP connection modes 的文章了解详情。

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

关于java - 如何使用 Apache SSHD 进入被动模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32324150/

相关文章:

java - 如何在 Netbeans 之外运行我的 Java+Glassfish+JavaDB Web 应用程序

java - 如何将前导零添加到国家号码?

分布式数据上的 HTTP 与 FTP

c# - FtpWebRequest 表示 Stream 已处理

java - 日志文件中的奇怪消息 @^@^@^@^@^@^@^@^@^@^@^@^@^@^@^

java - ExpiringMap 无法使对象过期

java - H2 数据库,使用 Java CSVREAD 合并到表中

java - -XX :-TieredCompilation do? 究竟是什么

batch-file - 使用 FTP.exe 和 mget 从 FTP 目录下载文件和目录

Java 服务器端应用程序,如何?