At least for the password, I think that Net::OpenSSH can let your ssh-agent provide the key. That way, you only need to load your keys once and provide the password to them once, and all SSH-based scripts can then reuse them.
I'm somewhat unclear on your actual setup and why/where you have a problem with the environment. Personally, I like to do all development locally and have the needed modules pulled in through a Makefile.PL or cpanfile, which I load via cpanm --installdeps .. I don't need any kind of root user or permissions to upload my files to a remote account though, and really prefer it that way, so I don't really understand where your problem actually is. My suggestion here is to find a setup that does not need root on either side of the connection at all.