Herramientas de usuario

Herramientas del sitio


informatica:programacion:python:modulos:paramiko

¡Esta es una revisión vieja del documento!


Paramiko

Paramiko es una implementación en Python del protocolo SSH, ofreciendo funcionalidad de cliente y servidor.

Paramiko permite que el usuario se valide tanto por contraseña como por par de llaves,

SSH

Conexión con credenciales

import paramiko
 
# Inicia un cliente SSH
ssh_client = paramiko.SSHClient()
 
# Establecer política por defecto para localizar la llave del host localmente
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
 
# Conectarse
ssh_client.connect('123.456.78.90', 22, 'user', 'secretpassword')
 
# Ejecutar un comando de forma remota capturando entrada, salida y error estándar
entrada, salida, error = ssh_client.exec_command('ls -la')
 
# Mostrar la salida estándar en pantalla (en este caso es una lista de líneas)
print(salida.readlines())
 
# Cerrar la conexión
ssh_client.close()

Si no queremos que la contraseña quede almacenada en el código, se puede pedir por pantalla para introducirla por teclado:

from getpass import getpass
import paramiko
 
clave = getpass('Clave: ')
HOST = '123.456.78.90'
PUERTO = 372
USUARIO = 'juanperez'
 
datos = dict(hostname=HOST, port=PUERTO, username=USUARIO, password=CLAVE)
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(**datos)
entrada, salida, error = ssh_client.exec_command('ls -la')
print(salida.read())
ssh_client.close()

Conexión SSH anidada

Si queremos conectarnos a un servidor SSH y después, desde ese servidor, conectarnos a otro.

import paramiko
import sys
import subprocess
 
jumphost = "192.168.1.10"
server = "192.168.1.11"
 
# we instantiate a new object referencing paramiko's SSHClient class
vm = paramiko.SSHClient()
vm.set_missing_host_key_policy(paramiko.AutoAddPolicy())
vm.connect(jumphost, username='root', password='a')
 
#
vmtransport = vm.get_transport()
server_addr = (server, 22) #edited#
jump_host = (jumphost, 22) #edited#
 
jhost = paramiko.SSHClient()
jhost.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#jhost.load_host_keys('/home/osmanl/.ssh/known_hosts') #disabled#
jhost.connect(server, username='root', password='a', sock=vmchannel)
 
stdin, stdout, stderr = jhost.exec_command("cat /home/server")
#
print(stdout.read()) #edited#
#
jhost.close()
vm.close()
informatica/programacion/python/modulos/paramiko.1605011396.txt.gz · Última modificación: por tempwin