gpt4 book ai didi

linux - 如何使用 CGI 和 Perl 的 Net::OpenSSH 模块在远程 Linux 服务器上执行系统命令?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:23:27 26 4
gpt4 key购买 nike

编辑:先阅读这篇文章:我在这里尝试做的是极端隧道愿景的结果,这篇文章可能很有趣,但没有提供信息。你不需要通过 SSH 连接到你自己的服务器来执行命令,我什至在想什么......

标题几乎说明了一切。我想在 Linux 服务器(Debian,如果重要的话)上托管一个 CGI 网站,并在单击按钮时在服务器本身上执行系统命令。我通过 Perl 执行此操作,它是 Net::OpenSSH 模块。

问题来了。我可以通过服务器本身的终端运行脚本,但如果我使用 sudo。命令是否只是“ls”并不重要。毫不奇怪,当单击调用该模块的网站上的按钮时,它也不起作用。

这是我的代码:

#!/usr/bin/perl
use strict;
use warnings;
use Net::OpenSSH;

print("Content-type: text/html\n\n");

print("TEST");

my $ssh = Net::OpenSSH->new('localhost', user => 'myusername', password => 'mypassword');

$ssh->system("ls") or die "ERROR: " . $ssh->error;

print("TEST2");

当使用 sudo 在终端中运行它时,脚本打印出 TEST,然后列出我的主目录中的文件夹(Desktop、Documents 等),最后是 TEST2.

当我不使用 sudo 时,它只打印 TEST,之后是这个错误信息:

ERROR: unable to establish master SSH connection: the authenticity of the target host can't be established; the remote host public key is probably not present on the '~/.shh/known_hosts' file at opensshtest.pl line 13.

我根本没有使用 SSH key ,我试图通过将用户名和密码硬编码到脚本中来提供用户名和密码。

此外,当在浏览器中打开时,它只会打印出第一个 TEST

如有任何帮助,我们将不胜感激。

最佳答案

又是我,发布问题的人。有趣的是,我花了几个小时来尝试完成这项工作,并在此处发布问题后大约一个小时偶然发现了一个解决方案。但这里是:

我添加了 master_opts => [-o => "StrictKeyChecking=no"] 作为创建 Net::OpenSSH 对象的附加参数(带有 user 的行密码等)。

关于linux - 如何使用 CGI 和 Perl 的 Net::OpenSSH 模块在远程 Linux 服务器上执行系统命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39357544/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com