Use Net:SSH2; $ssh2 = Net::SSH2->new(); $ssh2->connect($host,$port); $ssh2->auth_password($os_user,$os_pass); eval { local $SIG{ALRM} = sub { die "alarm\n"; }; alarm (10); $ssh2->scp_get($remote, $local); alarm (0); };