在Apache上运行ssh - >无法获得伪终端:权限被拒绝

时间:2015-11-07 05:19:20

标签: ssh flask apache2.2

我使用带有apache的烧瓶(mod_wsgi)。

当我使用外部命令OffsetDateTimePattern pattern = OffsetDateTimePattern.ExtendedIsoPattern; OffsetDateTime odt = pattern.Parse("2015-11-06T18:34:07+05:30").Value; DateTimeOffset dto = odt.ToDateTimeOffset(); DateTime dt = dto.UtcDateTime;

的ssh模块时



(我的Python Flask代码:没错)

subprocess.call("ssh ......",shell=True)

ssh = "sshpass -p \""+password+"\" ssh -p 6001 "+username+"@"+servername+" \"mkdir ~/MY_SERVER\""



我在Apache error_log上遇到了这个错误:subprocess.call(ssh, shell=True)

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

我在RHEL 7下遇到了这个问题。这是由于SELinux阻止apache用户访问pty。解决:

  1. 禁用或设置SELinux为允许(检查您的安全需求):编辑/ etc / selinux / config并重启。
  2. 允许apache控制其存储SSH密钥的目录:

    sudo -u apache

    chown apache / etc / share / httpd

    ssh到所需主机,接受密钥。

答案 1 :(得分:0)

我认为apache的登录shell是“/ sbin / nologin”。

如果你想允许apache使用shell命令,修改/ etc / passwd并将登录shell更改为另一个shell,如“/ bin / bash”。

但是,此方法易受安全性影响。许多python ssh模块都可以在互联网上找到。使用其中一个。