Java 后续行动:在还必须切换用户时使用JSch到SFTP
这是以下方面的后续行动: 自从我在我们的服务器管理团队审查他们的策略时提出最初的问题以来,这个问题就一直被搁置,但我现在又重新提起它 我想做的是使用JSch连接到远程服务器,然后使用sftp或scp访问一些文件——正如原始问题中的代码示例所示。问题是这些文件属于另一个用户,因此我需要向该用户发送su,然后在发出sftp或scp命令之前提供密码 这不能在JSch中完成,这是正确的,因为能够通过exec通道发送密码存在安全风险。这些是我看到的未来的选择Java 后续行动:在还必须切换用户时使用JSch到SFTP,java,sftp,scp,jsch,su,Java,Sftp,Scp,Jsch,Su,这是以下方面的后续行动: 自从我在我们的服务器管理团队审查他们的策略时提出最初的问题以来,这个问题就一直被搁置,但我现在又重新提起它 我想做的是使用JSch连接到远程服务器,然后使用sftp或scp访问一些文件——正如原始问题中的代码示例所示。问题是这些文件属于另一个用户,因此我需要向该用户发送su,然后在发出sftp或scp命令之前提供密码 这不能在JSch中完成,这是正确的,因为能够通过exec通道发送密码存在安全风险。这些是我看到的未来的选择 重写JSch功能。Martin在回答原始问题
尽管我可以想象,您的系统管理员不允许您直接登录,因为他们无法预见它会带来什么(如果有的话)安全问题。我只想与大家分享,我通过修改示例JSch示例JumpHosts,找到了解决此问题的方法 重写静态类MyUserInfo中继承的方法允许我自动接受提示框、输入框等,而无需实际使用键盘,因此我可以根据需要进行全自动测试 jcraft团队提供了如此有用的工作示例,这太棒了。感谢每一个花时间阅读和思考我的问题的人。
编辑:根据Martin的评论,我应该指出,只有在SSH配置中有一个特殊规则,允许直接用户2从本地主机登录(而不允许直接远程登录)时,这才有效。那不是苏多。因此,这在一般情况下是行不通的。非常感谢您总是抽出时间来解决这些问题,Martin。您已经证实了我的想法-您是对的,我的管理员将不允许我作为其他用户直接访问。我会让我的团队了解我们在stackoverflow上的交流,希望我们都同意,这个特定的测试至少需要一些手动步骤。端口转发示例与sudo有什么关系?如果您用两个参数调用端口转发示例:user1@hostname及user2@localhost其中user1是我的个人用户user2是一个可以访问我想要的文件(user1没有直接访问权限)的用户,它的工作非常棒!但是,只有在SSH配置中有一个特殊规则,允许直接
user2
从localhost
登录(而不允许直接远程登录)时,这才有效。那不是苏多。所以这在一般情况下是行不通的。答案中值得一提。