当我运行 kinit ganesh@abc.com 时,它会在我通过终端时询问密码。我正在尝试使用java
构建与Web应用程序相同的内容验收标准: -
答案 0 :(得分:0)
我建议你使用Jsch,你可以在这里找到这个库
这里有一个示例或ssh连接
答案 1 :(得分:0)
如果您使用的是OpenSSH ssh
客户端,则可以尝试通过SSH_ASKPASS
变量指定的配套程序实现传递密码。基本上,您需要SSH_ASKPASS
指向要运行的二进制ssh
,并且该二进制文件必须在stdout上输出密码。
检查此答案:How to make ssh receive the password from stdin了解更多详情和具体示例。
缺点是,您需要一个外部二进制文件 - 您需要考虑其安全性。例如,如果二进制文件是/ tmp中动态生成的shell脚本 - 您需要严格的文件系统权限,因此除了您的ssh子进程之外,没有人可以读取或执行它。如果二进制文件本身是静态的并且从例如环境变量获取密码,则必须确保SSH不会意外地将此变量传递给远程主机(例如,通过意外指定的SendEnv
)。
如果符合您的要求,您可以使用一些Java SSH库(如建议的Jsch - 这里有一个列表:SSH library for Java)。它应该是最灵活的选择 - 在控制方面你有SSH客户端行为,除非你想要Jsch不支持的东西。
此外,我强烈建议您考虑不使用密码,但是您的服务器有私钥,而您连接的服务器将其公钥附加到~/.ssh/authorized_keys
(除非你正是为了这个目的而需要基于密码的登录,当然)。如果这是一个可行的方案,您可以避免完全共享任何敏感信息,从而显着提高安全性。