Мне нужно выполнить SSH с удаленной машины, в которой я вошел в систему, используя Net :: SSH :: Perl, то есть 'cmd', переданный в $ ssh-> cmd в приведенном ниже коде это еще один SSH (например, имя пользователя @ hostname). Есть ли способ передать пароль для этого второго SSH, а затем выполнить команду на этом втором удаленном компьютере. Кроме того, я не могу использовать такие инструменты, как ssh key-pair logins или sshpass. Может кто-нибудь помочь?Выполнение второго SSH в SSH в perl
use Net::SSH::Perl;
my $hostname = "hostname";
my $username = "username";
my $password = "password";
my $cmd = <command to be executed on remote machine>;
my $ssh = Net::SSH::Perl->new("$hostname", debug=>0);
$ssh->login("$username","$password");
my ($stdout,$stderr,$exit) = $ssh->cmd("$cmd");
print $stdout;
Я помню связанный с этим вопрос. Вы действительно должны это делать, ssh в цепях? Почему бы не вернуться обратно к хосту и ssh из него еще раз? – zdim
SSH на второй удаленный компьютер можно сделать только с первой удаленной машины – nebula
См. Также [Цитирование в bash и perl в рекурсивной команде ssh] (http://stackoverflow.com/questions/23597777/quoting-in-bash-and-perl -in-recursive-ssh-command) –