使用SSH密钥的Perl LFTP管道

时间:2018-01-08 19:04:40

标签: perl ssh sftp lftp

我目前可以使用用户名/密码组合连接到SFTP服务器:

print "Attempting connection...\n";

open( my $LFTP,'|-', "lftp -u $ftpuser,'$ftppwd' -e open -p $ftpport $ftpserver" ) or die "Cannot open lftp: $!";

print $LFTP <<"END";
                    ls
END
close($LFTP); # die unless lftp exit code is 0

exit 0;

如何使用通过密码加密的SSH密钥更改此代码以连接到其他服务器?

这是我尝试过的:

print "Attempting connection...\n";

# $ftppwd is blank now!

open( my $LFTP,'|-', "lftp -u $ftpuser,'$ftppwd' -e 'set sftp:connect-program \"ssh -a -x -i $keypath\"; open $ftpserver;'" ) or die "Cannot open lftp: $!";

print $LFTP <<"END";
                                ls
END
close($LFTP); # die unless lftp exit code is 0
exit 0;

输出卡在:

Attempting connection...
`ls' at 0 [Connecting...]

提前感谢您的帮助..

1 个答案:

答案 0 :(得分:0)

在-e参数的open命令中添加-u选项,并使用密码作为密码。您还应该使用url语法来选择sftp协议,例如SFTP://用户:短语@服务器