【问题标题】:Ssh with JSch to a remote machine that asks twice for username and password使用 JSch SSH 连接到两次询问用户名和密码的远程机器
【发布时间】:2019-11-08 05:59:55
【问题描述】:

我只是对远程机器执行ssh me1@ipaddress,我无法理解发生了什么。该命令再次要求输入用户名和密码两次,如下所示:

$ ssh me1@ip

username : me2
password : 

我正在使用 JSch,它允许指定一组用户名和密码,如下所示:

new JSch().getSession(userName, connectionIP, connectionPort)

但在这种情况下,我们需要提供两个用户名作为me1me2

如何使用 JSch 或 Java 中的任何其他库来实现这一点?

【问题讨论】:

  • 向我们展示更多代码。 getSession之后你在做什么?
  • 如果你只做ssh ipaddress(没有me1@)会发生什么?那么用户名/密码提示是什么样的呢?您收到的username/password 提示可能来自您登录时启动的命令,即与 ssh 无关的内容。
  • @RogerGustavsson 没有me1@,它直接要求输入密码,但正如预期的那样,它与我的密码不匹配。
  • 那么,用户名没有问题吗?也许您的 ssh 客户端设置为使用默认用户名?
  • @RogerGustavsson No. No. 只有me1@,它会再次询问username :password :,如上所示。没有它,它直接询问密码和我的密码,在那里不匹配。 ..! :(

标签: java linux ssh jsch


【解决方案1】:

您的ssh 命令启动一个shell 会话。凭据提示只是常规 I/O 提示,与其他任何提示一样。没有特定的凭据。所以你应该提供输入的方式,你可以提供任何其他输入——通过将它写入 shell 输入流。

【讨论】:

  • 感谢您指出我的问题中的明显缺陷。只是想知道:是否有任何特定目的或理由为什么一个人拥有或想要使用这样的“两个”登录名?
  • 感谢您的回复。我将尝试使用非常适合您的答案的Shell 频道类型来解决这个问题。
  • 因为我已将我的实施渠道类型从exec 更改为shell。它工作正常。感谢和快乐学习...! :)
  • @GhostCat 不知道。实际上,me1 可能并不真正需要。也许唯一真正的登录是me2。一些从 Telnet 切换到 SSH 的旧设备会这样做 - 它们不使用 SSH 身份验证机制,而是保留旧的类似 Telnet 的 I/O 提示。
猜你喜欢
  • 2018-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多