我正在尝试使用Net :: SSH2连接到远程SSH服务器.命令行ssh工作正常.但我似乎无法弄清楚正确的auth_hostbased参数
这是我的代码:
use Net::SSH2;
my $ssh = Net::SSH2->new();
$ssh->debug(1);
$ssh->trace(-1);
$ssh->connect('remotehost.remotedomain.tld') or die;
$ssh->auth_hostbased('username',
'ssh-rsa AAAAB3Nz[..]C0JoaFF9 root@myhost',
'-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,FA97214E87562096A7E480C82DAE5EB4
XIMKnj9k[..]kpRo5V
-----END RSA PRIVATE KEY-----',
'myhost.mydomain.tld',
'username',
'keypassword') or die;
Run Code Online (Sandbox Code Playgroud)
该片段仅使用'Net :: SSH2 :: DESTROY对象0xe17de0'来消息@ $ ssh-> auth_hostbased.设置跟踪似乎并不重要.用$ ssh-> die_with_error替换die会抛出'die_with_error不是有效的Net :: SSH2宏'.下载当前0.53版本的Net:SSH2不起作用,因为脚本不再编译:'Net :: SSH2对象版本0.44与bootstrap参数0.53不匹配'
任何有关正确参数格式或替代模块的帮助都表示赞赏.
我在类方法调用中使用命名参数,并想知道是否有最佳实践来确保没有传递未知参数.这就是我在做什么
sub classmethod {
my $self = shift;
my %args = (
"param1" => "default1",
"param2" => "default2",
@_
)
if (my @invalid = grep { !/^(param1|param2)$/ } keys %args) {
croak "received unknown arg(s) ".join(",", @invalid)." from ".caller();
}
}
Run Code Online (Sandbox Code Playgroud)
这是一种正确的前进方式,还是会导致性能问题?
最好的,马库斯