通过Web应用程序在运行时将密码传递给ssh(服务器)

时间:2017-04-26 16:59:39

标签: java ssh server java-8 nodes

当我运行 kinit ganesh@abc.com 时,它会在我通过终端时询问密码。我正在尝试使用java

构建与Web应用程序相同的内容

验收标准: -

  1. 密码应该通过UI,我们应该能够连接到服务器。即我们通过UI传递的密码应该指定为密码。

2 个答案:

答案 0 :(得分:0)

我建议你使用Jsch,你可以在这里找到这个库

http://www.jcraft.com/jsch

这里有一个示例或ssh连接

http://www.jcraft.com/jsch/examples/Shell.java.html

答案 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(除非你正是为了这个目的而需要基于密码的登录,当然)。如果这是一个可行的方案,您可以避免完全共享任何敏感信息,从而显着提高安全性。