Conexión SSH con Python y Paramiko

Tutorial: Conexión SSH con Python y Paramiko

Introducción

SSH es un protocolo de red que permite establecer conexiones seguras entre dos ordenadores. Se utiliza habitualmente para acceder a ordenadores remotos y ejecutar comandos de forma remota.

Paramiko es una biblioteca de Python que proporciona una API para el protocolo SSH. Con Paramiko, podemos crear scripts de Python que se conecten a ordenadores remotos y ejecuten comandos.

En este tutorial, veremos cómo usar Paramiko para establecer conexiones SSH.

Requisitos

Para seguir este tutorial, necesitarás:

  • Un ordenador con Python instalado.
  • Un ordenador remoto al que puedas conectarte a través de SSH.
  • Las credenciales para acceder al ordenador remoto.

Instalación de Paramiko

Para instalar Paramiko, abre una terminal y ejecuta el siguiente comando:

pip install paramiko

Creando una conexión SSH

Para crear una conexión SSH con Paramiko, puedes usar el siguiente código:

Python
import paramiko

host = "192.168.1.1"
port = 22
username = "user"
password = "password"

# Crea un cliente SSH
client = paramiko.SSHClient()

# Configura el cliente para que no solicite confirmación de clave pública
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# Conecta al servidor
client.connect(host, port, username, password)

# Ejecuta un comando en el servidor
stdin, stdout, stderr = client.exec_command("ls")

# Imprime la salida del comando
print(stdout.readlines())

# Cierra la conexión
client.close()

Este código creará un cliente SSH y se conectará al servidor especificado. Luego, ejecutará el comando ls en el servidor y imprimirá la salida del comando.

Explicación del código

  • La línea import paramiko importa la biblioteca Paramiko.
  • La línea host = "192.168.1.1" especifica la dirección IP o el nombre de host del servidor.
  • La línea port = 22 especifica el puerto SSH del servidor.
  • La línea username = "user" especifica el nombre de usuario para conectarse al servidor.
  • La línea password = "password" especifica la contraseña para conectarse al servidor.
  • La línea client = paramiko.SSHClient() crea un cliente SSH.
  • La línea client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) configura el cliente para que no solicite confirmación de clave pública.
  • La línea client.connect(host, port, username, password) conecta al servidor.
  • La línea stdin, stdout, stderr = client.exec_command("ls") ejecuta el comando ls en el servidor.
  • La línea print(stdout.readlines()) imprime la salida del comando.
  • La línea client.close() cierra la conexión.

Ejercicios

  • Modifica el código para que se conecte a un servidor diferente.
  • Modifica el código para que ejecute un comando diferente.
  • Modifica el código para que capture la salida de error del comando.

Conclusión

En este tutorial, aprendimos cómo usar Paramiko para establecer conexiones SSH. Con Paramiko, podemos crear scripts de Python que se conecten a ordenadores remotos y ejecuten comandos.