in reply to Net::SFTP permission denied but sftp works

try this, pass in an empty password.

$args{password} = '';

and cross your fingers. you might also want to explicitly specify the path to your identity file. doing these made Net::SSH work for me with keys, never tried SFTP.