Re: help with making an sftp connection
Brent Wood via beginners <[email protected]> Mon, 17 Apr 2023 23:53:35 +0000 (UTC)
| Newsgroups | gmane.comp.lang.perl.beginners |
|---|---|
| Message-ID | <[email protected]> |
Thanks for that suggestion, it does provide more info, and using the script more as you formatted it: say "start"; $sftp = Net::SFTP::Foreign->new($host, user => $user, password => $pass, more => [ qw( -v -o PreferredAuthentications=password -o PasswordAuthentication=yes -o BatchMode=yes ) ] );say "done"; I get this output: start ...debug1: Local version string SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.1 debug1: Remote protocol version 2.0, remote software version OpenSSH_8.9p1 Ubuntu-3ubuntu0.1 debug1: compat_banner: match: OpenSSH_8.9p1 Ubuntu-3ubuntu0.1 pat OpenSSH* compat 0x04000000 debug1: Authenticating to 127.0.0.1:22 as 'baw' debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: algorithm: curve25519-sha256 debug1: kex: host key algorithm: ssh-ed25519 debug1: kex: server->client cipher: [email protected] MAC: <implicit> compression: none debug1: kex: client->server cipher: [email protected] MAC: <implicit> compression: none debug1: expecting SSH2_MSG_KEX_ECDH_REPLY debug1: SSH2_MSG_KEX_ECDH_REPLY received debug1: Server host key: ssh-ed25519 SHA256:9xuiSKoLyBrR6XdL2Ktv9Osdoq257n++/zUO0izC+7s Host key verification failed. done It seems to be trying to use key based authentication irrespective of the -o parameters passed in. I looked for an ssh based fix & found this: https://superuser.com/questions/1376201/how-do-i-force-ssh-to-use-password-instead-of-key Which suggested the issue was possibly at the server end, but my /etc/ssh/ssh_config file is set up to allow password authentication, and I can ssh in directly with password only, so it does not seem that this is my problem. As far as I can tell, it is just scripted sftp via Perl that seems to fail. Even if I omit the user & password entries in the connect string, Perl still gets my user as the default & never prompts for a password, just gives the same message. It may be worth trying to do this with Net::SFTP instead of Net::SFTP::Foreign, any advice? Thanks again, Brent On Monday, April 17, 2023 at 10:58:49 PM GMT+12, Dermot <[email protected]> wrote: Hi, Can you edit the constructor to include `more => [ -v ]` so we can get more feedback from the SSH connection and send the output from that. $sftp = Net::SFTP::Foreign->new($host, user => $user, password => $pass, more => [ qw( -v -o PreferredAuthentications=password -o PasswordAuthentication=yes -o BatchMode=yes ) ] ) or $sftp->error; The clue to what is going wrong will be in the output from ssh.Thanks,Dermot On Mon, 17 Apr 2023 at 10:13, Brent Wood via beginners <[email protected]> wrote: More detail, thanks for your time... This is to test the Perl script on a local (Linux) system, copying a file from /tmp to another directory. I can use command line sftp to copy a file fine with the user/password connection, so there is not a problem with sftp, user/password etc on the system. This Perl script executes without error, but hangs on $sftp = Net::... (prints start, never prints done) If I take out the password assignment, I'm prompted for a password and it then works fine. With it there, it hangs. Can anyone help me get this working with a password passed as a parameter? use Net::SFTP::Foreign; use IO::Pty; use feature say; $host = "127.0.0.1"; $user = "baw"; $pass = "......"; say "start"; $sftp = Net::SFTP::Foreign->new($host, user => $user, password => $pass, more => [qw(-o PreferredAuthentications=password -o PasswordAuthentication=yes -o BatchMode=yes)] ); say "done";