use Net::OpenSSH; my $sshA = Net::OpenSSH->new($serverA, user => $userA, password => $passwordA); my $proxy_command = $sshA->make_remote_command({tunnel => 1}, $serverB, 22); my $sshB = Net::OpenSSH->new($serverB, user => $userB, password => $passwordB, proxy_command => $proxy_command); $sshB->system($cmd1); $sshB->system($cmd2); ...