【问题标题】:Embedding Apache SSHD server in Android application在 Android 应用程序中嵌入 Apache SSHD 服务器
【发布时间】:2013-05-20 20:32:57
【问题描述】:

我正在尝试在我的 Android 应用程序中嵌入 Apache SSHD 服务器。这里是 代码:

        SshServer sshd = SshServer.setUpDefaultServer();
        sshd.setPort(8022);
        sshd.setKeyPairProvider(new SimpleGeneratorHostKeyProvider("hostkey.ser"));
        sshd.setShellFactory(new ProcessShellFactory(new String[]{"/system/bin/sh", "-i", "-l"},
        EnumSet.of(ProcessShellFactory.TtyOptions.ONlCr)));
        sshd.setCommandFactory(new ScpCommandFactory());
        List<NamedFactory<Command>> namedFactoryList = new ArrayList<NamedFactory<Command>>();
        namedFactoryList.add(new SftpSubsystem.Factory());
        sshd.setSubsystemFactories(namedFactoryList);
        sshd.setPasswordAuthenticator(new PasswordAuthenticator() {
            public boolean authenticate(String name, String password, ServerSession session) {
                logger.debug("Name: " + name + ", Password: " + password);
                return true;
            }
        });
        sshd.start();

SCP 连接正常,但登录后 SSH 一直显示:

login as: *****
*****@192.168.1.22's password:
/system/bin/sh: No controlling tty: open /dev/tty: No such device or address
/system/bin/sh: can't find tty fd
/system/bin/sh: warning: won't have full job control
*****@android:/ $

在此之后,我无法输入控制台,没有任何反应。 有谁知道如何解决这个问题?或者,有没有其他方法可以在我的应用程序中嵌入 SSH 服务器?

感谢您的任何帮助。

最好的问候 米兰

【问题讨论】:

  • 有这方面的消息吗?我正在为 android 实现一个 ssh 服务器,我也遇到了同样的问题。
  • 我已经放弃尝试在 Android 上运行 Apache SSHD,现在我使用 dropbear 二进制文件。
  • 可能是 SELinux 问题。自 SEL 引入以来,root/su 行为发生了根本性的变化。对开发者极其不友好。看看这个:su.chainfire.eu

标签: android apache-mina sshd


【解决方案1】:

我通过将 -T 开关添加到 ssh 来解决这个问题。我仍然收到警告,但至少我可以在终端中输入。

【讨论】:

    猜你喜欢
    • 2015-09-02
    • 1970-01-01
    • 2016-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-03
    • 2015-02-15
    • 2018-03-28
    相关资源
    最近更新 更多