我希望在连接到java中的远程主机后读取SSH密钥-sig对标题(用于生成SSH密码)。我正在使用JSch客户端库进行SSH连接。
在主机上执行某些操作后,SSH密码会更改,因此每次我需要从key-sig对生成新的SSH密码才能登录。
有没有办法可以通过编程方式阅读横幅?
以下是在尝试通过客户端控制台(PuTTY)进行SSH时出现密码提示的key-sig对标题的片段。
NbwDZIAGjGS90zisB + jY9Kqrmu67PyMwas6S6jY68f + QL4l + TJDyHWUTGtzluflwY + Z / bHn0mXtdIkgxsoiVm5nCnNi0viMUKq / dPygXEZ0uDma9Co0WHI25UNLn525pNSuT1At5wTEEinH7xKiypIKDNVxxeprshtsd4rcirTUQveTBEbAgABJtzHrSNHmqs2Rui4NbWRqFDabft4uID6qwtl5wxAoNhh0Z9FT1r3kCK0FoLxcp9nlyQ6kD2rmp1sQG1SvQky2ATa9sD + ZBBAhlvwbOns5fWRE8A + ElQtkvyB8IxCS59cWa8T5rXm7G57x9uExEn57Vn3ZBuKP9Tg == bS6VdF5I167P03QMkM88k2cwS9KtyEfgT6Ff2e0iIvxdBMSKq453953J // vuriZk + mKjiEX0 / RzrQSVIAzOYXFTtsZrIh7ER2IS0LoaXQ5izk4aobVq3BtiU + EknM3Qcy7IpVbwmQ7ZmCmjtOL +的Ux / n8vEDLYdk8dVeFJpzp4s53MrRkm4RC9yHgROW6HJxYscmQa + xah5ymRJyC2mt4aFfeQjAUZIEBhncLQge6nGEMybXmail1bgqhinE5xem + K6M2Ad3 + 0ahhW7NflWC4LjweTSHfsItfDwsb8i280LuYuw6w07LTadkn40AfpnVXOiFM + eUpUeIkw16RzduCew ==
答案 0 :(得分:1)
消息(您调用" SSH密钥-sig对标题")可以作为SSH身份验证标志或SSH键盘交互式身份验证提示。它不能是密码验证提示,因为SSH服务器无法自定义。
在这两种情况下,要捕获邮件,请实施UserInfo
interface。并使用Session.setUserInfo
method将其与Session
实例相关联。
要捕获身份验证横幅,请实施UserInfo.showMessage
method。请注意,JSch也会为其他(内部)消息调用该方法,而不仅仅是横幅。所以你必须检查,如果你收到了你正在寻找的消息。
要捕获键盘交互式提示,您的UserInfo
实施必须同时实施UIKeyboardInteractive
interface及其UIKeyboardInteractive.promptKeyboardInteractive
method。该消息可以包含name
,instruction
或prompt
个参数。你必须自己找出来。
要快速测试服务器发送邮件的方式,请尝试连接WinSCP SFTP client并检查邮件的显示方式。
作为banner:
或作为keyboard interactive prompt?
标题中的"服务器提示符" 是您在name
中获得的内容。 instruction
将在"使用键盘交互式身份验证" (此提示下没有"说明")下方呈现。而"挑战是......" 是prompt[0]
(只有一个"提示"在这种情况下,但还有更多)。