当我手动运行此Perl脚本时,它可以建立连接。但是当我在系统中实现时,它会显示:authenticity of the target host can't be established, the remote host public key is probably not present on the '~/.ssh/known_hosts' file
。
我需要帮助和建议。
my $host = "xxxs.com";
my $sftp = Net::SFTP::Foreign->new($host,user => 'xxx', password => 'xxx',
more => '-v',stderr_fh => $ssherr);
答案 0 :(得分:2)
查看Net :: SFTP :: Foreign doc中的FAQ。它是在主机密钥检查下提交的,是最后一个条目。这是一段摘录。
主机密钥检查
问:使用密码验证连接到远程服务器失败 出现以下错误:
The authenticity of the target host can not be established, connect from the command line first
答:这可能意味着来自远程服务器的公钥是 没有存储在
~/.ssh/known_hosts file
中。从中运行SSH连接 命令行作为与脚本相同的用户,并在何时回答是 要求确认提供的钥匙。
那里也有一个例子。
答案 1 :(得分:0)
我的解决方案是:
my $ftp = Net::SFTP::Foreign->new( $HOST,
user => $USERNAME,
password => $PASSWORD,
more => [-o => 'StrictHostKeyChecking no'] );
StrictHostKeyChecking在哪里做到了。
参考:https://www.freebsd.org/cgi/man.cgi?query=Net::SFTP::Foreign