[pyar] Problema para conectarme a Servidor SSH con python
José de Jesus Marquez Rangel
ing.jdj en gmail.com
Jue Jul 21 14:54:18 ART 2016
Saludos.
La presente tiene la finalidad de solicitar el apoyo para la orientación
con conexiones ssh desde windows.
Actualmente me encuentro conectandome a servidor que esta en la misma red,
la conexión es éxitosa cuando me conecto con aplicaciones como: ssh, putty,
etc. Consulte con un compañero y el logro conectarse con una librería en
*Delphi*, ya que los equipos tiene una configuración distinta a la que
podemos encontrar en servidores linux
*.*
Realizado pruebas tanto al equipo que se quiere conectar como al servidor
linux de prueba. Utilizando las distintas librerias que te ofrece python
obtuve los siguientes resultados:
*Debian(Linux):*
--------------------------------------------------------------
PARAMIKO LINUX
from paramiko import SSHClient, AutoAddPolicy, util,Transport
import traceback
log_filename='log.log'
ssh = SSHClient()
util.log_to_file(log_filename)
ssh.set_missing_host_key_policy(AutoAddPolicy())
#MssBTO01
try:
ssh.connect('XX.XX.XX.X', username='XXXXX',
password='',port=22)
(stdin, stdout, stderr) = ssh.exec_command("ls -l;")
except Exception as e:
print(traceback.print_exc())
print(e)
finally:
ssh.close()
-------------------------------------------------------------
Paramiko. Conexión éxitosa.
Log generado:
DEB [20160721-10:13:54.392] thr=1 paramiko.transport: userauth is OK
INF [20160721-10:13:54.430] thr=1 paramiko.transport: Authentication
(password) successful!
DEB [20160721-10:13:54.431] thr=2 paramiko.transport: [chan 0] Max
packet in: 32768 bytes
DEB [20160721-10:13:54.450] thr=1 paramiko.transport: [chan 0] Max
packet out: 32768 bytes
DEB [20160721-10:13:54.450] thr=1 paramiko.transport: Secsh channel 0 opened.
DEB [20160721-10:13:54.451] thr=1 paramiko.transport: [chan 0] Sesch
channel 0 request ok
DEB [20160721-10:13:54.453] thr=1 paramiko.transport: [chan 0] EOF
received (0)
DEB [20160721-10:13:54.454] thr=1 paramiko.transport: [chan 0] EOF sent (0)
DEB [20160721-10:13:54.454] thr=1 paramiko.transport: Dropping user
packet because connection is dead.
*Equipo(Por medidas de seguridad desconozco el equipo y la
configuraciones).*
- Paramiko. "paramiko.ssh_exception.SSHException: Channel closed."
Log generado.
DEB [20160721-09:55:40.913] thr=1 paramiko.transport: userauth is OK
INF [20160721-09:55:40.927] thr=1 paramiko.transport: Authentication
(password) successful!
DEB [20160721-09:55:40.927] thr=2 paramiko.transport: [chan 0] Max
packet in: 32768 bytes
DEB [20160721-09:55:40.941] thr=1 paramiko.transport: [chan 0] Max
packet out: 32768 bytes
DEB [20160721-09:55:40.941] thr=1 paramiko.transport: Secsh channel 0 opened.
INF [20160721-09:55:40.954] thr=1 paramiko.transport: Disconnect
(code 2): Service not available: OHAZ;
-------------------------------------------------------------
PARAMIKO EQUIPO
from paramiko import SSHClient, AutoAddPolicy, util,Transport
import traceback
log_filename='log.log'
ssh = SSHClient()
util.log_to_file(log_filename)
ssh.set_missing_host_key_policy(AutoAddPolicy())
#MssBTO01
try:
ssh.connect('XX.XX.XX.X', username='XXXXX',
password='',port=22)
(stdin, stdout, stderr) = ssh.exec_command("ls -l;")
except Exception as e:
print(traceback.print_exc())
print(e)
finally:
ssh.close()
----------------------------------------------------------
- subprocess: Conexion éxitosa, pero no se como colocar el password
Log generado:
Permission denied, please try again.
Permission denied, please try again.
Permission denied (password).
-------------------------------------------------
import subprocess
con = subprocess.Popen(['ssh','user en host'],stdout=subprocess.PIPE,
stdin=subprocess.PIPE)
for line in con.stdout.readlines():
print(line)
-----------------------------------------------------------------------------
*Descargando Cygwin*
Para utilizar la libreria pexpect y pxssh.
Me genera el siguiente error
pexpect.TIMEOUT: Timeout exceeded in read_nonblocking().
--------------------------------------------------------------------------------------------------------
child = pexpect.spawn("ssh user en host",timeout=120)
>>> child.logfile = open('some.log','a+')
>>> child.expect('user en host\'s password:')
>>> child.sendline("password")
>>> child.expect('command')
>>> child.sendline("<")
pexpect.TIMEOUT: Timeout exceeded in read_nonblocking().
---------------------------------------------------------------
Ya realice la sugericia de agregar más tiempo y no funciono a la
read_nonblocking().
Plataforma
*Cliente*
Windows 7 64bit
Python3.4
Libreria usandas:
Paramiko. "paramiko.ssh_exception.SSHException: Channel closed."
spur: "paramiko.ssh_exception.SSHException: Channel closed."
pexcepet: ImportError: Can't import name "spawn"
Agradecería todo el apoyo que me pueda prestar.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20160721/00ede272/attachment-0001.html>
Más información sobre la lista de distribución pyar