Net::OpenSSH 中的交互模式
Interactive mode in Net::OpenSSH
我是 perl 的初学者,正在尝试编写一个在给定主机上使用 Net::OpenSSH 到 运行 命令的脚本。我如何在 Net::OpenSSH 中进行交互模式验证,类似于我们在 Net:SSH::Perl 中进行的操作。 Net:SSH::Perl 有一个交互式标志,如果设置为 true 则接受密码,否则 public key auth。以下是我在 Net::SSH::Perl 中的 ssh 对象,我想在 Net::OpenSSH 中复制它:
$ssh = Net::SSH::Perl->new($host,
debug => $debug,
port => $port,
interactive => $imode,
identity_files => [ @keys ],
);
此外,Net::SSH::Perl 可以接受一组键,而 Net::OpenSSH 只能接受一个键。我该如何解决这个问题?
Net::OpenSSH already runs in interactive mode by default, letting the underlaying ssh
process ask for a password when all the other authentication methods fail (you have to request batch_mode
禁用它)。
您可以通过 master_opts
构造函数参数传递多个键:
my $ssh = Net::OpenSSH->new($host, ...
master_opts => [map { -i => $_ } @keys]);
您还可以在 GitHub bug-tracker 中创建功能请求,我最终会添加对接受多个密钥的支持,而无需使用 master_opts
hack。
我是 perl 的初学者,正在尝试编写一个在给定主机上使用 Net::OpenSSH 到 运行 命令的脚本。我如何在 Net::OpenSSH 中进行交互模式验证,类似于我们在 Net:SSH::Perl 中进行的操作。 Net:SSH::Perl 有一个交互式标志,如果设置为 true 则接受密码,否则 public key auth。以下是我在 Net::SSH::Perl 中的 ssh 对象,我想在 Net::OpenSSH 中复制它:
$ssh = Net::SSH::Perl->new($host,
debug => $debug,
port => $port,
interactive => $imode,
identity_files => [ @keys ],
);
此外,Net::SSH::Perl 可以接受一组键,而 Net::OpenSSH 只能接受一个键。我该如何解决这个问题?
Net::OpenSSH already runs in interactive mode by default, letting the underlaying ssh
process ask for a password when all the other authentication methods fail (you have to request batch_mode
禁用它)。
您可以通过 master_opts
构造函数参数传递多个键:
my $ssh = Net::OpenSSH->new($host, ...
master_opts => [map { -i => $_ } @keys]);
您还可以在 GitHub bug-tracker 中创建功能请求,我最终会添加对接受多个密钥的支持,而无需使用 master_opts
hack。