Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Unix上验证Java中的SSH凭据_Java_Unix_Authentication_Ssh - Fatal编程技术网

在Unix上验证Java中的SSH凭据

在Unix上验证Java中的SSH凭据,java,unix,authentication,ssh,Java,Unix,Authentication,Ssh,我在unix机器上有一个文本文件,其中包含SSH用户名和密码,有人可能会使用它来连接它 如何使用Java验证用户名和密码是否有效 我是否尝试使用Runtime.exec()通过SSH连接到同一台机器 我可以grep用户/etc/passwd。但是,密码是隐藏的 如果有任何建议,我将不胜感激 如果您有root访问权限,那么您当然可以阅读/etc/shadow。我认为这是一种“正确”的做法 除此之外,我认为您调用ssh的可怕方式应该还可以,但是我会使用ssh运行一个命令,该命令创建了一些随机的临时文

我在unix机器上有一个文本文件,其中包含SSH用户名和密码,有人可能会使用它来连接它

如何使用Java验证用户名和密码是否有效

我是否尝试使用Runtime.exec()通过SSH连接到同一台机器

我可以grep用户/etc/passwd。但是,密码是隐藏的


如果有任何建议,我将不胜感激

如果您有root访问权限,那么您当然可以阅读/etc/shadow。我认为这是一种“正确”的做法

除此之外,我认为您调用ssh的可怕方式应该还可以,但是我会使用ssh运行一个命令,该命令创建了一些随机的临时文件——然后,如果创建了文件(或执行了命令),您会认为用户名/密码是正确的。听起来很恶心,但是你可以在紧急情况下让它工作


哦,当然,frig有一个副作用,那就是你实际上是以那个用户的身份登录的。这可能是可取的,也可能不是可取的

如果您有root访问权限,那么您当然可以阅读/etc/shadow。我认为这是一种“正确”的做法

除此之外,我认为您调用ssh的可怕方式应该还可以,但是我会使用ssh运行一个命令,该命令创建了一些随机的临时文件——然后,如果创建了文件(或执行了命令),您会认为用户名/密码是正确的。听起来很恶心,但是你可以在紧急情况下让它工作


哦,当然,frig有一个副作用,那就是你实际上是以那个用户的身份登录的。这可能是可取的,也可能不是可取的

问题可能会扩大到“从Java验证UNIX凭据”,因为所解释的机制实际上并不依赖于ssh

以下是我在不使用网络堆栈开销的情况下作为更好的Expect-like替代方案(例如,with)的拍摄:

su-u用户名-c echo

只需检查退出状态即可知道答案。
(优点:su在所有UNIX操作系统上都存在,甚至可能在PATH上,并且对于其他外部身份验证系统(如LDAP)也是有效的)。

可能问题可以扩大到“从Java验证UNIX凭据”,因为所解释的机制实际上并不依赖于ssh

以下是我在不使用网络堆栈开销的情况下作为更好的Expect-like替代方案(例如,with)的拍摄:

su-u用户名-c echo

只需检查退出状态即可知道答案。
(优点:su在所有UNIX操作系统上都存在,它甚至可能在PATH上,并且对于其他外部身份验证系统(如LDAP)也是有效的)。

请记住,UNIX身份验证不仅仅是/etc/passwd和/etc/shadow。例如,它们可以针对Kerberos、LDAP、NIS或任何其他数量的源进行身份验证。出于这个原因,我强烈建议研究Java的PAM包装器。一个快速的谷歌出现了,但我没有这方面的经验


当然,sshd可能被配置为根本不使用PAM,或者只允许某些用户,等等。如果您想完全遵循sshd的规则,那么这会改变一切,但听起来PAM auth更符合您的需要。

请记住,UNIX身份验证不仅仅是/etc/passwd和/etc/shadow。例如,它们可以针对Kerberos、LDAP、NIS或任何其他数量的源进行身份验证。出于这个原因,我强烈建议研究Java的PAM包装器。一个快速的谷歌出现了,但我没有这方面的经验

当然,sshd可能被配置为根本不使用PAM,或者只允许某些用户,等等。如果您想要完全遵循sshd的规则,那么这会改变事情,但听起来PAM auth更像是您想要的