Página 1 de 1

Error al conectarme a sftp con Net::SFTP

NotaPublicado: 2012-11-07 15:36 @691
por damian1510
Utilizando el siguiente script:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $host = '192.168.2.xxx';
  2.         my %args = (
  3.            user => "user",
  4.            password => "pass",
  5.            debug => 1,
  6.            ssh_args => {
  7.           protocol => 2,
  8.        },
  9.         );
  10.         $sftp = Net::SFTP->new($host, %args) or die("FTP Error: $@");
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


se queda esperando con este mensaje:

Waiting for NEWKEYS message.

y después de un tiempo:

Received disconnect message: Disconnecting
at /usr/local/share/perl/5.10.1/Net/SSH/Perl/Kex.pm line 103.


¿Podrían decirme cómo solucionarlo?

Buscando encontré esta publicación: https://rt.cpan.org/Public/Bug/Display.html?id=48338 que tiene un script al final pero no tengo idea de cómo aplicarlo y no está verificado.

Re: Error al conectarme a sftp con Net::SFTP

NotaPublicado: 2012-11-07 16:32 @731
por explorer
Bienvenido a los foros de Perl en Español, damian1510.

En este hilo se comenta que hay que estar seguros de estar usando la última versión de Net::SFTP, pero es un módulo que está sin actualizar desde el 2005.

Salva recomienda usar su propio módulo: Net::SFTP::Foreign, que a su vez usa por debajo el comando ssh que tengas instalado en tu sistema.

El parche que comentas en rt.cpan.org, veo que consiste solamente en añadir dos líneas (las marcadas con un '+') al archivo Net/SSH/Perl/Channel.pm y al archivo Net/SSH/Perl/Handle/SSH2.pm, en las líneas que se indican. Lo puedes resolver con un simple editor de textos.

Re: Error al conectarme a sftp con Net::SFTP

NotaPublicado: 2012-11-08 09:31 @438
por damian1510
Te agradezco por la rápida respuesta, hice algunas pruebas y parece que funciona correctamente.
Si tengo tiempo de probar el parche te comentaré los resultados.
¡Saludos!

Re: Error al conectarme a sftp con Net::SFTP

NotaPublicado: 2012-11-10 19:02 @834
por salva
Efectivamente explorer, los módulos Net::SSH::Perl y Net::SFTP llevan años abandonados y tienen una larga lista de bugs... eso sin contar con que instalarlos es una pesadilla y que el rendimiento es pésimo (aún después de instalar Math::Pari).

Hoy en día, para automatizar tareas con SSH en Perl, mi recomendación es usar Net::SSH2 o Net::OpenSSH.

Últimamente también he estado trabajando en Net::SSH::Any que es un módulo que trata de ofrecer un API unificada de alto nivel y que por debajo puede utilizar cualquiera de los citados anteriormente para gestionar la conexión por SSH. Pero aún está muy verde.

En cuanto a SFTP, Net::SFTP::Foreign está muy por delante de Net::SFTP en todos los aspectos: funcionalidad, robustez, rendimiento, etc. Además de utilizar el binario de ssh para establecer la conexión como tu indicas, también es capaz de trabajar sobre Net::SSH2 si se instala en módulo Net::SFTP::Foreign::Backend::Net_SSH2.

Net::SSH2 incorpora también su propio módulo de SFTP (Net::SSH2::SFTP), pero es de muy bajo nivel lo que se traduce en más trabajo a la hora de trabajar con el mismo.