Subject: | Problems with Net::SFTP on some hosts |
Hi!
I have written scripts that use Net::SFTP for file transfers.
Now I'm satisfied with them and have installed them to some servers. Now
I'm getting strange errors from Net::SFTP.
Errors I get, seem quite mystic to me, because same code works on some
hosts but not on others, where it does not work, I got errors like
"Broken pipe". Connecting to those hosts also takes quite a long time
(like every action of Net::SFTP would be delayed by something), when
compered to those hosts where Net::SFTP works. Remote end of connections
is same host and user account in working and non-working connections.
I did set debugging on to Net::SFTP in my scripts (like "$args{debug} =
1") and error always rises after debug prints:
"Sending request for user-authentication service.".
Debug from non-working host:
non-working_host: Reading configuration data /usr/local/loro/.ssh/config
non-working_host: Reading configuration data /etc/ssh_config
non-working_host: Connecting to remote.host.com, port 22.
non-working_host: Remote version string: SSH-1.99-OpenSSH_3.8.1p1
non-working_host: Remote protocol version 1.99, remote software version
OpenSSH_3.8.1p1
non-working_host: Net::SSH::Perl Version 1.30, protocol version 2.0.
non-working_host: No compat match: OpenSSH_3.8.1p1.
non-working_host: Connection established.
non-working_host: Sent key-exchange init (KEXINIT), wait response.
non-working_host: Algorithms, c->s: 3des-cbc hmac-sha1 none
non-working_host: Algorithms, s->c: 3des-cbc hmac-sha1 none
non-working_host: Entering Diffie-Hellman Group 1 key exchange.
non-working_host: Sent DH public key, waiting for reply.
non-working_host: Received host key, type 'ssh-dss'.
non-working_host: Permanently added 'remote.host.com' to the list of
known hosts.
non-working_host: Computing shared secret key.
non-working_host: Verifying server signature.
non-working_host: Waiting for NEWKEYS message.
non-working_host: Enabling incoming encryption/MAC/compression.
non-working_host: Send NEWKEYS, enable outgoing encryption/MAC/compression.
non-working_host: Sending request for user-authentication service.
Broken pipe
Debug from working host:
working_host: Reading configuration data /usr/local/loro/.ssh/config
working_host: Reading configuration data /etc/ssh_config
working_host: Connecting to remote.host.com, port 22.
working_host: Remote protocol version 1.99, remote software version
OpenSSH_3.8.1p1
working_host: Net::SSH::Perl Version 1.27, protocol version 2.0.
working_host: No compat match: OpenSSH_3.8.1p1.
working_host: Connection established.
working_host: Sent key-exchange init (KEXINIT), wait response.
working_host: Algorithms, c->s: 3des-cbc hmac-sha1 none
working_host: Algorithms, s->c: 3des-cbc hmac-sha1 none
working_host: Entering Diffie-Hellman Group 1 key exchange.
working_host: Sent DH public key, waiting for reply.
working_host: Received host key, type 'ssh-dss'.
working_host: Permanently added 'remote.host.com' to the list of known
hosts.
working_host: Computing shared secret key.
working_host: Verifying server signature.
working_host: Waiting for NEWKEYS message.
working_host: Enabling incoming encryption/MAC/compression.
working_host: Send NEWKEYS, enable outgoing encryption/MAC/compression.
working_host: Sending request for user-authentication service.
working_host: Service accepted: ssh-userauth.
working_host: Trying empty user-authentication request.
working_host: Authentication methods that can continue:
publickey,password,keyboard-interactive.
working_host: Next method to try is publickey.
working_host: Next method to try is password.
working_host: Trying password authentication.
working_host: Login completed, opening dummy shell channel.
working_host: channel 0: new [client-session]
Installations of Net::SFTP and Net::SSH:Perl did go ok on every host
(installed from CPAN).
Hosts where Net::SFTP and scripts work:
1. Host 1 is quite modern system (except OS is Slack 10.0)
- It has Perl 5.8.4 and current Net::SFTP and Net::SSH::Perl:
find . -name "*Net-S*" -print
./I/IV/IVAN/Net-SSH-0.08.tar.gz
./I/IV/IVAN/Net-SCP-0.07.tar.gz
./D/DR/DROLSKY/Net-SSH-Perl-1.25.tar.gz
./D/DR/DROLSKY/Net-SFTP-0.08.tar.gz
./D/DB/DBROBINS/Net-SSH-Perl-1.30.tar.gz
./D/DB/DBROBINS/Net-SFTP-0.10.tar.gz
2. Host 2 is not modern (something like K6-2 and running old Slack ):
- It has Perl 5.6.1 and older Net::SFTP and Net::SSH::Perl:
cpan/sources/authors/id# find . -name "*Net-S*" -print
./I/IV/IVAN/Net-SSH-0.08.tar.gz
./I/IV/IVAN/Net-SCP-0.07.tar.gz
./D/DB/DBROBINS/Net-SSH-Perl-1.27.tar.gz
./D/DB/DBROBINS/Net-SFTP-0.09.tar.gz
Non-working hosts:
3. Host 3 is dual-PIII machine with Slack 10.0 (same as host 1)
- it has Perl 5.8.4 (same as host 1) and just updated Net::SSH-modules
4. Host 4 is PIII host with Slack 10.2
- it has Perl 5.8.7 and just updated Net::SSH-modules.
All hosts are running same version of my scripts, so I dont see how
problem could be there.
Because I did not find any other common thing with non-working
installations, except just updated Net::SSH-modules, I got to conclusion
that problem is in these modules. Of course, this problem could be lying
in some other module, to which Net::SSH-modules have dependencies, but I
can't debug it. First I tought problems were related to host 4 being so
old and slow, but when after that everything gone with speed on host 2
(which is slower and older machine), I concluded this is not hardware
related.
I have not had possibility to test connection without username and
password (to avoid Net::SSH's possible problems with user-auth).
I'm also installing these new versions of Net::SSH-modules (and all
other modules from CPAN that they require) to an old Solaris box and to
one new Fedora Core 4 box, to see if problem is really related to
current version of modules from CPAN.