Java 使用Jsch在远程EC2实例上创建文件夹
我想从另一个EC2实例在远程EC2实例上创建一个文件夹,然后将一些数据复制到其中Java 使用Jsch在远程EC2实例上创建文件夹,java,ssh,amazon-ec2,jsch,Java,Ssh,Amazon Ec2,Jsch,我想从另一个EC2实例在远程EC2实例上创建一个文件夹,然后将一些数据复制到其中 我试图使用JSch创建文件夹,并传递命令sudo mkdir/data,但我得到的错误是sudo:对不起,您必须有一个tty才能运行sudo。如果没有sudo,我也无法创建文件夹。我尝试使用((ChannelExec)channel.setPty(true),通过使用它我可以创建文件夹,但之后我无法复制任何数据,甚至无法从命令行ssh EC2实例。(如果我手动创建文件夹,则复制数据成功)。有人能告诉我应该怎么做吗?
我试图使用JSch创建文件夹,并传递命令
sudo mkdir/data
,但我得到的错误是sudo:对不起,您必须有一个tty才能运行sudo
。如果没有sudo,我也无法创建文件夹。我尝试使用((ChannelExec)channel.setPty(true)
,通过使用它我可以创建文件夹,但之后我无法复制任何数据,甚至无法从命令行ssh EC2实例。(如果我手动创建文件夹,则复制数据成功)。有人能告诉我应该怎么做吗?谢谢,下面的例子怎么样
http://www.jcraft.com/jsch/examples/Sudo.java.html
我不熟悉JSch。但是,如果您具有root访问权限,您可以更新sudoers配置文件来解决这个问题。将以下行添加到/etc/sudoers
Defaults:USERNAME_HERE !requiretty
也许其他人可以详细说明这是否是一个坏主意,这超出了我的知识范围,但我想知道更多
我只在一种特定情况下使用这种方法。我们有一个cronjob,它通过rsync备份远程服务器集群,但是rsync要成功运行,它需要sudo权限
为了解决这个问题,我做了以下几点-
backupuser ALL = NOPASSWD: /usr/bin/rsync
DEFAULTS:backupuser !requiretty
USER SPECIFICATION OPTION_TAG (: CONDITIONS(opt))
: /usr/bin/rsync
希望这有助于回答您的问题。我知道这有点相切,但我想给出一个完整的解释。有关更多信息,您也可以查看man sudoAlan感谢您提供的详细答案,但我认为这对我来说不起作用,因为我正在运行中创建EC2实例,并且在/etc/sudoers中无法更改任何内容,而无需更改其权限设置,因此我需要在RHEL 6.3实例中再次使用sudoHere,一切都与setPty完美配合(真实);如何阻止伪终端。您是简单地使用setPty(false)还是还需要做其他事情?
ALL = NOPASSWD
: /usr/bin/rsync
DEFAULTS:backupuser !requiretty