本文介绍了需要结合"Sudo"和"ScpTo" JSch的示例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我无法将"Sudo"和"ScpTo"两种情况组合在一起.

I'm unsuccessful with combining "Sudo" and "ScpTo" cases.

我注意到,两者都通过"exec"通道工作.

I noticed, that both work through "exec" channel.

"ScpTo"清除案例以权限被拒绝"消息结束.

Clean "ScpTo" case finishes with "Permission denied" message.

"Sudo"案

Channel channel = session.openChannel("exec");
((ChannelExec) channel).setCommand("sudo -S -u <supervisor> whoami");

工作正常.

当我通过FarManager连接到服务器时,我会写服务器选项:

When I connect to my server through FarManager I write server option:

sudo su -l <supervisor> -c /usr/libexec/openssh/sftp-server

此外,我可以像这样运行普通的SFTP客户端:

Also, I can run usual SFTP client like this:

sftp -s 'sudo su -l <supervisor> -c /usr/libexec/openssh/sftp-server'  "usual user"@"host"

并给出put命令.

但是JSch中未实现这种选项(-s).

But such option (-s) is not implemented in JSch.

如何使用JSch配置案子(Sudo& ScpTo)?

How can I configure my case (Sudo & ScpTo) with JSch?

推荐答案

ScpTo.java示例,有以下代码:

In ScpTo.java example, there's this code:

String command="scp " + (ptimestamp ? "-p" :"") +" -t "+rfile;

将其更改为:

String command="sudo su -l <supervisor> -c scp " + (ptimestamp ? "-p" :"") +" -t "+rfile;

这篇关于需要结合"Sudo"和"ScpTo" JSch的示例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-12 07:00