java - 在 Java 连接到主机后如何读取 SSH key 签名对横幅(用于生成 SSH 密码)?

标签 java ssh jsch

我想在连接到 java 中的远程主机后读取 SSH key 签名对横幅(用于生成 SSH 密码)。我正在使用 JSch 客户端库进行 SSH 连接。

在主机上进行某些操作后,SSH 密码会发生变化,因此每次我都需要从 key 签名对生成新的 SSH 密码才能登录。

有没有一种方法可以让我以编程方式读取横幅?

下面是尝试通过客户端控制台 (PuTTY) 进行 SSH 时出现的 key 签名对横幅的片段,并显示密码提示。

NbwDZIAGjGS90zisB+jY9Kqrmu67PyMwas6S6jY68f+QL4l+TJDyHWUTGtzluflwY+z/bHn0mXtdIkgxsoiVm5nCnNi0viMUKq/dPygXEZ0uDma9Co0WHI25UNLn525pNSuT1At5wTEEinH7xKiypIKDNVxxeprshtsd4rcirTUQveTBEbAgABJtzHrSNHmqs2Rui4NbWRqFDabft4uID6qwtl5wxAoNhh0Z9FT1r3kCK0FoLxcp9nlyQ6kD2rmp1sQG1SvQky2ATa9sD+ZBBAhlvwbOns5fWRE8A+ElQtkvyB8IxCS59cWa8T5rXm7G57x9uExEn57Vn3ZBuKP9Tg== bS6VdF5I167P03QMkM88k2cwS9KtyEfgT6Ff2e0iIvxdBMSKq453953J//vuriZk+mKjiEX0/RzrQSVIAzOYXFTtsZrIh7ER2IS0LoaXQ5izk4aobVq3BtiU+EknM3Qcy7IpVbwmQ7ZmCmjtOL+Ux/n8vEDLYdk8dVeFJpzp4s53MrRkm4RC9yHgROW6HJxYscmQa+xah5ymRJyC2mt4aFfeQjAUZIEBhncLQge6nGEMybXmail1bgqhinE5xem+K6M2Ad3+0ahhW7NflWC4LjweTSHfsItfDwsb8i280LuYuw6w07LTadkn40AfpnVXOiFM+eUpUeIkw16RzduCew==

最佳答案

该消息(您将其称为“SSH key 签名对横幅”)可以作为 SSH 身份验证横幅或 SSH 键盘交互式身份验证提示出现。它不能是密码身份验证提示,因为 SSH 服务器无法自定义该提示。

在这两种情况下,要捕获消息,请实现 UserInfo interface 。并使用 Session.setUserInfo method 将其与 Session 实例关联起来。 .

<小时/>

要快速测试服务器如何发送消息,请尝试使用 WinSCP SFTP client 连接并检查它如何显示消息。

  • 作为 banner :

    enter image description here

  • 或作为 keyboard interactive prompt

    enter image description here

    标题中的“服务器提示符”就是您在名称中得到的内容。 指令将呈现在“使用键盘交互式身份验证”下方(此提示中没有“指令”)。 “挑战是...”提示[0](在这种情况下只有一个“提示”,但可以有更多)。

关于java - 在 Java 连接到主机后如何读取 SSH key 签名对横幅(用于生成 SSH 密码)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40058471/

相关文章:

java - 如何实现基于不同条件的集合过滤

java - 在 Swing GUI 中定位组件

git - 用于访问多个存储库的 SSH 配置不起作用

java - 使用Java通过SSH隧道传输文件

java - 通过Java中的SSH隧道连接到Mongo数据库

java - Android等待动画完成

java - 为什么在达到 InitiatingHeapOccupancyPercent 时 G1 不开始标记周期?

docker - 不能与dockerized Gitlab一起使用ssh

ssh - 重新启动后AWS EC2 ftp sftp登录无法正常工作

java - 如何使用 JSch 的 SFTP channel 只获取目录和文本文件?