使用 JSch 执行的命令与在 SSH 终端中的行为不同(绕过 "yes/"no 的确认提示消息")

Commands executed using JSch behaves differently than in SSH terminal (bypasses confirm prompt message of "yes/"no")

注意:我登录的是设备,不是电脑,所以我登录的是配置模式(而不是非配置模式)。

我在 Java 中使用 JSch 库来使用 SSH 协议登录。我这样登录:

channel = con.openChannel("shell");
channel.connect();

在某些情况下,当我通过 shell 发送需要 su(配置模式)权限(更改配置)的命令时,此代码会绕过提示确认消息 - 这可能会阻止其他用户更改配置。而如果我使用 SSH client/terminal 手动输入命令,则必须输入 yes 进行确认。

有人知道为什么吗?
谢谢

[]

当我通过 JSch 登录时,即使我没有将 "yes" 插入到要执行的命令数组中,我也可以执行配置命令。

默认情况下,JSch 不请求 PTY (pseudo-terminal)。

这可能会导致某些命令的行为不同于交互式 SSH 终端。

您可以使用 ChannelSession.setPty 覆盖它。


如果以上没有帮助,另见类似问题: