Conexiones remotas (HTTP, FTP y SSH)
Cita con formato IEEE:
E. Bahit, "Conexiones remotas (HTTP, FTP y SSH)", in
Python Aplicado, 4th ed., EBRC Publisher, 2022, pp.
133-140.
Cita con formato APA 7:
Bahit, E. (2022). Conexiones remotas (HTTP, FTP y SSH). In
Python Aplicado (4th ed., pp. 133-140). EBRC Publisher.
Cita en línea:
(Bahit, 2022)
Otros temas de este capítulo:
- Conexiones remotas vía HTTP y HTTPS con bibliotecas nativas
- Conexiones remotas vía FTP con bibliotecas nativas
- Conexiones remotas vía SSH con la biblioteca Paramiko (estás aquí)
Conexiones SSH con Paramiko
La biblioteca paramiko debe instalarse de forma adicional, ya que no forma parte de las bibliotecas de Python, ni está mantenida por Python. Se trata de una biblioteca de terceros, que puede instalarse a través de PyPI (el gestor de paquetes de Python). En Debian, también es posible instalarla desde apt (tanto para Python 2 como 3). Sin embargo, se instalará mediante PyPI, ya que es la opción recomendada por el fabricante9.
Requisitos previos
Para poder instalar un paquete desde PyPI, se
necesita la herramienta pip
de Python. En Debian, el gestor
de paquetes de Python se instala mediante apt:
apt install python-pip # para Python 2, y apt install python3-pip # para Python 3
Una vez instalado el gestor de paquetes de Python, las instalaciones para Python 2 y para Python 3, se manejarán de forma independiente, por lo cual, habrá que instalar Paramiko en ambas versiones. Esto se hará como root:
pip install paramiko # para Python 2 pip3 install paramiko # Para Python 3
Uso de Paramiko
Una conexión SSH se inicializa con la creación de un
objeto SSHClient
:
from paramiko import SSHClient, AutoAddPolicy ssh = SSHClient()
Al igual que con la biblioteca FTP, tanto la conexión como la autenticación, se realizarán de forma separada (y no al construir el objeto), a fin de tener un mayor control sobre las mismas.
Para la autenticación mediante llave pública (en vez
de uso de contraseñas), se empleará
set_missing_host_key_policy
, a fin de localizar las llaves
y facilitar el intercambio de las mismas:
ssh.set_missing_host_key_policy(AutoAddPolicy())
Normalmente, el uso de este método no debería
ser necesario, y bastaría con emplear load_system_host_keys
:
ssh.load_system_host_keys()