• Publicidad

Problema con módulo Net::SSH2

Aquí encontrarás todo lo que sea específicamente acerca de módulos de Perl. Ya sea que estás compartiendo tu módulo, un manual o simplemente tienes una duda acerca de alguno.

Problema con módulo Net::SSH2

Notapor sergiogib » 2011-12-20 12:34 @565

¡¡¡Saludos Maestros!!!

Uso Windows 7 y tengo instalada la última versión de Activeperl (5.14). Sucede que quiero hacer una conexión por medio de SSH a una máquina remota y luego transferirle unos archivos usando SFTP (tema ampliamente comentado en este foro). De los pocos módulos que puedo usar (por compatibilidad de sistema operativo) uso el Net::SSH2, resulta que al querer acceder al equipo por SSH, el programa me tira error en Password, cosa que ya revisé cientos de veces y el password es el correcto. Coloco mi código para ver si ustedes me puede orientar :o :o

#!/usr/bin/perl
use Net::SFTP::Foreign;

my $host = '172.58.69.24';
my $user = 'pedro';
my $pass = 'marmol1';

use Net::SFTP::Foreign;

my $sftp = Net::SFTP::Foreign->new($host,
backend => 'Net_SSH2',
username => $user,
password => $pass);
$sftp->error and
die "No se puede establecer la conexionn SFTP: ". $sftp->error;

use Net::SSH2;

my $ssh2 = Net::SSH2->new();
$ssh2->connect($host)
or die "Conexion Fallida";
$ssh2->auth_password($user, $pass)
or die "Password incorrecto\n";
$sftp = Net::SFTP::Foreign->new(ssh2 => $ssh2,
backend => 'Net_SSH2');
$sftp->error and
die "No se puede establecer conexion SFTP: ". $sftp->error;

$sftp->get("foo", "foo") or die "get failed: " . $sftp->error;



La estructura del código que estoy usando es Net::SFTP::Foreign::Backend::Net_SSH2 - Run Net::SFTP::Foreign on top of Net::SSH2, cuyo autor es el amigo permalink... disculpen si mi tema es muy novato, pero es primera vez que intento hacer esto... ¡¡Gracias!!
sergiogib
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2011-12-20 10:13 @467

Publicidad

Re: Problema con módulo Net::SSH2

Notapor explorer » 2011-12-20 14:58 @665

Bienvenido a los foros de Perl en español, sergiogib.

Hummm... creo que no es username, sino user.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Problema con módulo Net::SSH2

Notapor salva » 2011-12-20 17:26 @768

explorer escribiste:Hummm... creo que no es username, sino user.

El backend de Net::SSH2 también acepta username.

Sergiogib, si nos dices cuál es el mensaje de error que te aparece será mucho más fácil ayudarte.

También puedes activar el modo de depuración de Net::SFTP::Foreign añadiendo la siguiente línea al principio de tu programa:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$Net::SFTP::Foreign::debug = -1;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Avatar de Usuario
salva
Perlero nuevo
Perlero nuevo
 
Mensajes: 200
Registrado: 2008-01-03 15:19 @680

Re: Problema con módulo Net::SSH2

Notapor sergiogib » 2011-12-20 17:34 @773

Intenté cambiar username por user, pero aun así persiste el problema, ¿¿¿alguna otra sugerencia???
Añadí el debug en la siguiente línea, y me muestra la siguiente información:

use Net::SSH2;

my $ssh2 = Net::SSH2->new();
$ssh2->debug(1);
$ssh2->connect($host)
or die "Conexion Fallida";

$ssh2->auth_password($user, $password)
or die "Password incorrecto\n";

$sftp = Net::SFTP::Foreign->new(ssh2 => $ssh2,


Resultado:

Password incorrecto
Net::SSH2::DESTROY object 0x182fadc
Net::SSH2::Channel::DESTROY
Net::SSH2::DESTROY object 0x18fe1e4


¿¿Recomendaciones??
sergiogib
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2011-12-20 10:13 @467

Re: Problema con módulo Net::SSH2

Notapor salva » 2011-12-21 03:57 @206

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use Net::SSH2;
  2. my $ssh2 = Net::SSH2->new();
  3. $ssh2->connect($host) or die "Conexion Fallida: " . $ssh2->error;
  4. $ssh2->auth_password($user, $password) or die "Password incorrecto: " . $ssh2->error;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Y para asegurarte de que no hay ningún error estúpido, como un nombre de variable mal escrito o algo así, activa los pragmas de warnings y strict:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use strict;
use warnings;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Avatar de Usuario
salva
Perlero nuevo
Perlero nuevo
 
Mensajes: 200
Registrado: 2008-01-03 15:19 @680

Re: Problema con módulo Net::SSH2

Notapor sergiogib » 2011-12-21 10:17 @470

Gracias por sus comentarios, pensé que iban a tardar en responderme, pero ha sido rápido... Les comento que he añadido la línea:

$Net::SFTP::Foreign::debug = -1;

El código del programa es este:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4.  
  5. $Net::SFTP::Foreign::debug = -1;
  6. my $host = '172.58.45.63';
  7. my $user = 'pedro';
  8. my $password = 'marmol1';
  9.  
  10. use Net::SFTP::Foreign;
  11.  
  12. my $sftp = Net::SFTP::Foreign->new($host,
  13.     backend => 'Net_SSH2',
  14.     user => $user,
  15.     password => $password);
  16.   $sftp->error and
  17.     die "No se puede establecer la conexionn SFTP: ". $sftp->error;
  18.  
  19. use Net::SSH2;
  20. my $ssh2 = Net::SSH2->new();
  21. $ssh2->connect($host) or die "Conexion Fallida: " . $ssh2->error;
  22. $ssh2->auth_password($user, $password) or die "Password incorrecto: " . $ssh2->error;
  23.  
  24.   $sftp = Net::SFTP::Foreign->new(ssh2 => $ssh2,
  25.     backend => 'Net_SSH2');
  26.   $sftp->error and
  27.     die "No se puede establecer conexion SFTP: ". $sftp->error;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4



Con el resultado siguiente:

#588 1324479196.00000 _queue_msg: queueing msg len: 5, code:1, id:3 ... [1]
00 00 00 05 01 00 00 00 03
| .........
#588 1324479196.00000 _get_msg: waiting for message... [1]
#588 1324479196.00000 _do_io: 9 bytes written to SSH channel
#588 1324479196.00000 _sysreadn: 4 bytes read from SSH channel
#588 1324479196.00000 _sysreadn: 5 bytes read from SSH channel
#588 1324479196.00000 _get_msg: got it!, len:5, code:2, id:-, status: -02 00 00 00 03
| .....
Password incorrecto: -18 at C:\Users\squintana\Programas Perl\ssh3.pl line 22.
#588 1324479196.00000 DESTROY: Net::SFTP::Foreign=HASH(0x119f6dc)->DESTROY called (current pid:=588, disconnect_by_pid: )
#588 1324479196.00000 disconnect: Net::SFTP::Foreign=HASH(0x119f6dc)->disconnect called (ssh pid: )
#588 1324479196.00000 _conn_lost: _conn_lost
#588 1324479196.00000 _set_status: _set_status code: 7, str: Connection lost
#588 1324479196.00000 _set_error: _set_err code: 37, str: Connection to remote server is broken


Siempre me dice que el Password es incorrecto. --Gracias por su ayuda--
sergiogib
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2011-12-20 10:13 @467

Re: Problema con módulo Net::SSH2

Notapor salva » 2011-12-21 16:40 @736

Pues, efectivamente, el código de error 18 es LIBSSH2_ERROR_AUTHENTICATION_FAILED, así que hay dos opciones: o has encontrado un bug en Net::SSH2/libssh2 (poco probable) o, de alguna manera, la clave que estás utilizando no es la correcta, o te estás conectando al servidor equivocado, o algo así.
Avatar de Usuario
salva
Perlero nuevo
Perlero nuevo
 
Mensajes: 200
Registrado: 2008-01-03 15:19 @680

Re: Problema con módulo Net::SSH2

Notapor explorer » 2011-12-21 18:09 @798

Añado... que la contraseña tenga un carácter "extraño", con una codificación en origen distinta de la que espera el servidor... o que el servidor no admite contraseñas por la entrada estándar, solo por el intercambio de claves... alguna mayúscula puesta como minúscula... que el antivirus/cortafuegos de la máquina impide el acceso desde el script hacia el exterior (no, esto no, porque se ve que sí responde el servidor)... y... ¿el nombre de usuario es correcto?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Problema con módulo Net::SSH2

Notapor sergiogib » 2011-12-26 13:02 @585

Caballeros, gracias por sus sugerencias y ayuda con este problema. Sucede que logro conectar con el servidor usando Putty, sin ningún problema, mismo user y mismo pass... No sé, algo me dice que será imposible hacerlo usando Perl... :(

¿La librería LIBSSH2 hay que instalarla aparte o viene incluida en el módulo de SSH2 que instalé con el Perl Package Manager...?
sergiogib
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2011-12-20 10:13 @467


Volver a Módulos

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 6 invitados

cron