我试图使用perl脚本在cron作业中将文件从一台机器传输到另一台机器。但是,出于安全原因,cron作业必须作为非特权用户运行。现在,如果我尝试使用这个没有特权的用户建立连接,Net::SFTP::Foreign
总是拒绝连接。以下是我遇到麻烦的部分脚本:
my $host = "hostname";
my %args = (
user => "username",
password => "password",
port => '12345'
);
my $sftp_connection = Net::SFTP::Foreign->new($host, %args);
if( $sftp_connection->error ) {
log_message( "E", "Error " . $sftp_connection->status() . " connecting to " . $host );
die;
}
log_message( "A", "Connected" );
我不能给出一个完整的例子,因为这需要用户名和密码。
如果以根用户身份执行此脚本,则一切正常,但是如果尝试使用其他用户,则连接总是失败。
有没有办法得到更多的诊断信息?我认为有一种方法可以从实际的sftp过程中获得更多的输出,但是我现在无法查找它,因为cpan目前无法从这里工作。
我以前也尝试过使用
Net::SFTP
而不是Net::SFTP
,但是后面部分的错误处理无法正常工作,所以现在切换到Net::SFTP
似乎不是一个可行的选择。 最佳答案
使用metapan.org
调试:
出于调试目的,可以在详细模式下运行ssh,并传递-v选项:my $sftp = Net::SFTP::Foreign->new($host, more => '-v');
"Module description"
关于linux - 使用Net::SFTP::Foreign作为非root用户没有连接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24363484/