我正在尝试在我的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服务器?
感谢您提供任何帮助。
最诚挚的问候 米兰
答案 0 :(得分:0)
我通过将-T开关添加到ssh来解决这个问题。我仍然收到警告,但至少我可以输入终端。