上运行命令,我需要看到这一点,我已经开发了一个Solaris机器上一个Perl CGI脚本browser.For的DataPower的服务当前状态。采用Perl CGI:远程计算机
我有一台cgi网络服务器,在这台服务器上我没有与DataPower设备的直接连接。我通过脚本连接到远程Solaris服务器'sun-rm',该服务器连接到DataPower设备。
在脚本中使用以下两条语句我试图运行远程服务器'sun-rm'上的命令,它将获取daatpower服务的当前统计信息。
system('ssh [email protected] "cd /tmp/dp/status; ./getstatus"'); system('scp -rp [email protected]:/tmp/dp/status/DPlive_Status /opt/webserver/https-util/cgi-bin2/datapower/');
但似乎是网络服务器是不是能充分利用“阳光-RM”服务器的安全连接,因为我可以在错误日志中看到以下错误。
Host key verification failed
。
现在,由于一些安全原因,我CNT“太阳-RM”服务器的密钥添加到Web服务器的信任库中。有什么方法可以在远程机器上运行这些命令?
此外,该web服务器安装在solaris机器'sun-util'上,从中我可以通过ssh执行'sun-rm'。但是由于上面提到的原因,从web服务器到'sun-rm'的ssh连接不能建立。
我可以理解,这可能是一个比较混乱的问题,请让我知道在任何情况下,更需要explianation?
由我开发的脚本如下:
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
printf "Content-type: text/html\n\n";
print <<HTML;
<HTML>
<HEAD>
<TITLE>DataPower_Status</TITLE>
</HEAD>
HTML
system('ssh [email protected] "cd /tmp/dp/status; ./getstatus"');
system('scp -rp [email protected]:/tmp/dp/status/DPlive_Status /opt/webserver7/https-util/cgi-bin2/datapower/');
chmod(0777, '/opt/webserver7/https-util/cgi-bin2/datapower/DPlive_Status');
open (FILE, "DPlive_Status") or die "could not open filename";
while(<FILE>) {
if ($_ =~ m/^Service/)
{
printf "<TR><TD><H4>$_</H4></TD></TR>\n";
}
else {
printf "<TR><TD><p>$_</p></TD></TR>\n";
}
}
close FILE;
print <<HTML;
</body>
</html>
HTML
-1用于暗示禁用主机密钥检查。这真的不是一个好主意。为什么我们不再使用telnet?还有其他的可能性,例如了解所有主机密钥或在所有群集节点之间共享一个主机密钥。 – 2015-01-21 10:50:33
因为telnet发送的东西都是明文的,其中ssh不是?因为telnet不允许公用密钥auth哪里ssh不?是的,禁用主机密钥检查是一个风险。与所有风险一样,您需要评估是否值得考虑。 – Sobrique 2015-01-21 11:06:46