Here is debug log:
#26911 1317897750.00000 _init_transport: ssh cmd: ssh -o NumberOfPasswordPrompts=1 -o PreferredAuthentications=keyboard-interactive,password -l <username> <sftpserver> -s sftp
#26911 1317897751.00000 _queue_msg: queueing msg len: 5, code:1, id:3 ... [1]
00 00 00 05 01 00 00 00 03 | .........
#26911 1317897751.00000 _get_msg: waiting for message... [1]
#26911 1317897751.00000 _do_io: _do_io connected: 1
#26911 1317897751.00000 _do_io: _do_io select(-,-,-, undef)
#26911 1317897751.00000 _do_io: _do_io write queue: 9, syswrite: undef, max: 65536, $!: Broken pipe
#26911 1317897751.00000 _conn_lost: _conn_lost
#26911 1317897751.00000 _set_status: _set_status code: 7, str: Connection lost
#26911 1317897751.00000 _set_error: _set_err code: 37, str: Connection to remote server is broken
#26911 1317897751.00000 _conn_lost: _conn_lost
#26911 1317897751.00000 _set_error: _set_err code: 50, str: Password authentication failed or connection lost
It works fine with standalone script.