【问题标题】:Can I start a JSch session without a username and password?我可以在没有用户名和密码的情况下启动 JSch 会话吗?
【发布时间】:2016-04-19 02:48:20
【问题描述】:

我在我的 Android 应用程序中使用 JSch,我想在不提供用户名和密码的情况下创建 SSH 连接。如果我提供用户名和密码,我可以连接,但如果我不提供用户名,则会收到来自 JSch 的错误。

这是我在不提供用户名和密码的情况下尝试连接的内容。

private class ConnectSSH extends AsyncTask<Void, Void, String> {
    @Override
    protected String doInBackground(Void... a) {
        try {
            JSch jsch = new JSch();
            Session session = jsch.getSession("192.168.1.42");
            session.setPort(22);
            session.connect();
            Channel channelssh = (Channel)session.openChannel("exec");
            StringBuilder sb = new StringBuilder();
            InputStream commandOutput = channelssh.getInputStream();
            channelssh.connect();
            int readByte = commandOutput.read();
            while(readByte != 0xffffffff){
               sb.append((char)readByte);
               readByte = commandOutput.read();
            }
            channelssh.disconnect();
            return sb.toString();
        } catch (Exception e) {
            return "Error - " + e;
        }
    }
    @Override
    protected void onPostExecute(String result) {
        Toast.makeText(getApplicationContext(), result, Toast.LENGTH_LONG).show();
    }
}

我唯一的选择是更改 JSch 的源代码以允许这样做,编译成 jar,然后导入吗?

【问题讨论】:

  • AFAIK,用户名要求与sshd 一样多。你是如何配置你的 SSH 守护进程使其不需要用户名的?
  • 理论上,您可以为您的 ssh 守护程序分配一个默认用户名(请参阅stackoverflow.com/questions/10197559/…),这样您就不必提供它了。但在这种情况下,它是一个 sshd 配置。另一件事是有人启动 ssh 连接并在此之后提供用户名的情况。在这种情况下,我认为 JSch 不会支持这个选项。
  • 谢谢利奥。我指的是像 Putty 这样的终端模拟器,在建立连接后需要用户名和密码。还是在给出用户名和密码之前没有真正建立连接?

标签: java ssh jsch


【解决方案1】:

JSch Session 类构造函数需要填写用户名。

但最终决定使用什么用户名的是 UserAuth 实现。

因此,您可以扩展例如UserAuthPassword 以将实际用户名分配给.start() 方法开头的.username 字段。

class UserAuthUsernamePassword extends UserAuthPassword {

  public boolean start(Session session) throws Exception {
    this.username = "real_username";
    return super.start(session);
  }

}

您只需将一个虚拟值传递给Session 构造函数的username 参数。

【讨论】:

    猜你喜欢
    • 2016-06-20
    • 2016-09-25
    • 1970-01-01
    • 1970-01-01
    • 2017-07-23
    • 1970-01-01
    • 2013-12-22
    • 2021-05-09
    • 2018-06-19
    相关资源
    最近更新 更多