0

我获得了一个 python 脚本,它可以远程登录到某些设备,或者如果设备在实验室中,则 ssh 到防火墙机器,然后它将远程登录到设备,并运行命令,返回输出以进行更多处理。

我把这个脚本绑定到一个 Django Web 应用程序中,这样我就可以从浏览器中填写一个包含目标系统信息的表单并让它显示结果。如果我从命令行启动这个 Web 应用程序,然后从浏览器(python manage.py 应用程序)访问它,一切正常。

但是,如果我将其设置为在“生产”模式下运行,使用带有 Apache 的虚拟主机,SSH 会失败。我怀疑这是在 root 或某个 Web 帐户下运行的,并且无法通过 SSH 连接到防火墙。

有人可以建议我如何让它工作吗?我在防火墙机器上没有任何权限,所以我无法设置 SSH 在某个 Web 帐户下运行。

在使用 SSH 的情况下,我是否需要从用户那里收集用户名和密码,然后将其传递给 ssh,或者是否有其他方法可以将 telnet 信息和命令传递给设备?

4

1 回答 1

2

你很近。这里的问题可能是您的 Web 服务器作为非特权用户(不是 root)运行,例如wwworwww-datanobody(取决于您的操作系统)。虽然该用户可能可以运行 SSH 二进制文件,但这样做时nobody,它可能没有主目录,找不到您的 .ssh 目录,也找不到.ssh/id_rsa 它需要的密钥文件(例如)用于身份验证。

你有很多选择。让您的私钥可用于 Web 服务器软件,然后启动 ssh 并-i选择身份文件。或者在您使用该-F选项指定的 SSH 配置文件中执行此操作。或者使用 启动 ssh sudo,并让您的 Web 服务器软件能够以其他(shell)用户身份运行 ssh。

我无法提供更具体的答案,因为您没有在问题中提供具体信息。操作系统、示例代码等

希望这可以帮助。

哦,您还应该考虑不这样做,并找到其他解决方案。可以通过 SSH 访问防火墙的 Web 应用程序,甚至是内部应用程序?对我来说,这听起来像是最终灾难的秘诀。:-)

于 2012-04-04T00:14:14.297 回答