1

当我手动运行这个 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);
4

2 回答 2

2

查看Net::SFTP::Foreign 文档中的常见问题解答。它在主机密钥检查下归档,是最后一个条目。这是一个摘录。

主机密钥检查

问:使用密码验证连接到远程服务器失败,并出现以下错误:

The authenticity of the target host can not be established,
connect from the command line first

A:这可能意味着来自远程服务器的公钥没有存储在~/.ssh/known_hosts file. 以与脚本相同的用户身份从命令行运行 SSH 连接,并在被要求确认提供的密钥时回答“是”。

那里也有一个例子。

于 2012-06-20T07:51:03.717 回答
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

于 2017-07-07T19:05:39.943 回答