Conexiones SSH y SFTP desde Python con paramiko



Documentos relacionados
El olvidado mundo de las variables en PHP

JackTheStripper: Instala, configura y asegura tu Ubuntu Server 12.04

a) Instalación del servidor SSH en GNU/Linux

Administración de usuarios y permisos en MySQL

Jorge De Nova Segundo

MANUAL DE USUARIO AVMsorguar

Manual de uso para la aplicación cliente para uso de FTP, FTPS y SFTP Configuración de Filezilla *

Módulos: Módulo 1. Hardware & Arquitectura de sistemas - 20 Horas

MANUAL DE INSTALACIÓN

Tutorial de instalación

CONFIGURACIÓN DEL SERVIDOR

INSTALACIÓN DE UBUNTU SERVER 12.4 EN MÁQUINA VIRTUAL

SERVIDOR WEB. Servidores web IIS (Windows) / Apache (Windows y Linux)

Guia rápida EPlus Cliente-Servidor

Instalación de cygwin-x. Pablo Sanz Mercado.

Servidor Local (MYSQL)

Manual de usuario de IBAI BackupRemoto

Internet Information Server

Servicio de Informática Vicerrectorado de Tecnologías de la Información y la Comunicación

INTRODUCCIÓN A PHP. Javier Enciso

SISTEMAS INFORMÁTICOS EN TIEMPO REAL 2º Ingeniería Industrial MANUAL DE HERRAMIENTAS SOFTWARE PARA PROGRAMACIÓN EN UNIX

Refactoring: otra práctica de la Programación extrema

Software de Comunicaciones. Práctica 7 - Secure Shell. SSH

Manual de NetBeans y XAMPP

GUIA DE LABORATORIO 06. Sitios Web Administrables con Joomla

Servidor FTP. JEAN CARLOS FAMILIA Página 1

Analizando los logs de acceso de Apache

PROCESO DE INSTALACIÓN Y CONFIGURACIÓN DE APACHE, PHP Y MySQL

MANUAL DE INSTALACIÓN Y CONFIGURACIÓN

Formas de llevar a cabo un backup de una base de datos MySQL

Sitios remotos. Configurar un Sitio Remoto

Cómo instalar el software de CRM Personas en un alojamiento web remoto

Pasamos ahora a definir brevemente cual es el método de conexión más habitual usando un entorno gráfico.

INDICE Qué es SQLyog Instalación del programa...4

Tutorial de Unity 3D Tema 52 Bases de Datos. Tutorial de Unity 3D. Bases de Datos

Manual para el uso de GIT Los siguientes pasos indican el procedimiento para entrar a GIT y para agregar la llave pública.

ALL IN HOSTING. Guías de uso. Guía de inicio para servidores linux.

Servidor Apache. Instalación Configuración Apache con Webmin 24/03/2014. Vicente

Acá vamos a ocuparnos de cómo realizar la instalación de una red intra-aula sobre Linux, concretamente en la distribución de GNU/Linux Ubuntu 9.04.

1.- Descarga de SQL Server 2008 R2 Express

EL ABC DE LA INSTALACIÓN DE DRUPAL 7

Cómo capturar páginas web con el programa GNU Wget

Qué es el protocolo SSH y cómo configurarlo para mejorar la seguridad de acceso a los servidores Linux

Facultad de Ciencias del Hombre y la Naturaleza SISTEMAS OPERATIVOS DE REDES CICLO II Materia: Sistemas Operativos de Redes Tema:

PROYECTO. Solución Empresarial Ingeniería y Desarrollo de Software - info@solucionempresarial.com.

Procedimiento. Actualización de Kit de Conexión de Comercios Webpay versión 5.X a Canales Remotos Operaciones. Transbank S.A.

Actividad 1: Utilización cliente FTP (mediante línea de comandos, entornos gráficos y navegadores/exploradores) (I).

INSTALACIÓN PHP+MYSQL CON EASYPHP

Como crear un túnel entre dos PC s usando el Protocolo SSH

Paso 2 Una vez se ha completado la instalación y ejecutado el programa, veremos esto

UNIDAD DIDACTICA 13 INICIAR SESIÓN EN LINUX DE FORMA REMOTA

Instalación y administración de un aula virtual con Moodle COPIAS DE SEGURIDAD DE NUESTRA PLATAFORMA MOOLDE

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD

Un punto de acceso que soporte seguridad RADIUS (en nuestro caso, hemos utilizado el siguiente modelo de punto de acceso

INSTALACIÓN DE GITLAB

ACTIVE DIRECTORY - PROPIEDADES DE USUARIO

Configuración de Aspel SAE 5.0 para trabajar Remotamente. 2. Para configurar Aspel-SAE 5.0 como Servidor Remoto se necesita:

Vielka Mari Utate Tineo Instituto Tecnológico de las Américas ITLA. Profesor José Doñé. Sistema Operativo 3 PRACTICA NO. 16, SERVIDOR

Contenido QUÉ ES SERVIDOR CLOUD?... 3 ACCESO AL SERVIDOR CLOUD... 3 ADMINISTRACIÓN DEL SISTEMA... 6

La siguiente guía trata sobre la instalación de SQL Server Express, y se encuentra estructurada en torno a tres puntos:

Programando por primera vez

Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable

AGENDA Curso Integral de Introducción y A dministra ció n a GNU/Linux

Cómo instalar fácilmente tu WordPress tras contratar un hosting en Hostalia

Manual de instalación Actualizador masivo de Stocks y Precios

ESCUELA POLITECNICA NACIONAL

INSTALACIÓN Y CONFIGURACIÓN DEL JANA SERVER

HOW TO SOBRE REMOTE ACCESS VPN MODE EN LINUX

Guía Rápida de Instalación SQL Server Express

MANUAL COPIAS DE SEGURIDAD

Instituto Tecnológico Las Américas (ITLA) Sistemas Operativos 3 (SO3) Daniel Alejandro Moreno Martínez. Matrícula:

Manual de uso de FileZilla (Para subir archivos XML al sitio FTP de Almacenes Zaragoza) Enero de 2011

INSTALACIÓN DE MySQL SERVER EN WINDOWS

TUTORIAL DE INSTALACIÓN Y CONFIGURACIÓN SERVIDOR LOCAL (MYSQL) Facturar en Línea

Configuración del cliente POP de correo electrónico de la Universidad de Sevilla

INSTITUTO TECNOLÓGICO DE SALTILLO

Programa de Ayuda EMCS Instalación Versión SQL Server Versión Marzo 2010

Copias de Seguridad con SQL Server Realizar una copia de seguridad de Bases de Datos

Como detectar conexión del Servidor y SQL?

Internet Information Server

CÓMO MANEJAR SU NUEVO SITIO WEB SOBRE DRUPAL Manual técnico y de usuario. Pontificia Universidad Javeriana Grupo PSU CDI

Alta Disponibilidad y Virtualización con soluciones de bajo costo

Instalación de SQL Server Express Edition en Grupo de Trabajo WhitePaper Junio de 2008

WINDOWS : TERMINAL SERVER

Desarrollo seguro en Drupal. Ezequiel Vázquez De la calle

DIPLOMADO EN SEGURIDAD INFORMATICA

Servidor de correo. En un servidor de correo, intervienen los siguientes protocolos:

NOTAS TÉCNICAS SOBRE EL SIT: Comunicados (II)

ASISTENCIA TÉCNICA A LA SEGURIDAD EN PYMES DE MELILLA MANUAL WINSCP

Instalación del Escritorio SSC

Practica 4 1. Certificados digitales

INTRODUCCION. Tema: Protocolo de la Capa de aplicación. FTP HTTP. Autor: Julio Cesar Morejon Rios

Transcripción:

Hackers & Developers Magazine Año 0, Número 9 7 Scripting para SysAdmins: Conexiones SSH y SFTP desde Python con paramiko PYTHON SCRIPTING Crear conexiones SSH con Python, es tan simple como escribir unas pocas líneas de código gracias al módulo paramiko 1 y con él, comenzamos la nueva serie de artículos «Scripting para SysAadmins», especialmente diseñada para Administradores de Sistemas que deseen incursionar en la programación. Escrito por: Eugenia Bahit (GLAMP Hacker & extreme Programmer) Eugenia es Arquitecta de Software, docente e instructora de tecnologías GLAMP (GNU/Linux, Apache, MySQL, Python y PHP) y Agile coach (UTN) especializada en Scrum y extreme Programming. Miembro de la Free Software Foundation, The Linux Foundation y Debian Hackers. Creadora de python-printr, Europio Engine y colaboradora de Vim. Webs: Cursos de programación: www.cursosdeprogramacionadistancia.com Web personal: www.eugeniabahit.com Redes sociales: Twitter / Identi.ca: @eugeniabahit Combinar el poder de SSH con el de Python es un sueño muy fácil de cumplir: solo basta con recurrir al módulo paramiko para que con unas pocas líneas de código, podamos crear scripts que nos permitan crear conexiones SSH y ejecutar comandos de forma remota. paramiko permite que el usuario se valide tanto por contraseña como por par de llaves, 1 https://pypi.python.org/pypi/paramiko

por lo cual es ideal para autenticar usuarios más allá de las políticas del servidor. Conexión con autenticación por contraseña El siguiente, es un ejemplo de conexión estándar autenticada por contraseña: # Inicia un cliente SSH # Establecer política por defecto para localizar la llave del host localmente # Conectarse ssh_client.connect('123.456.78.90', 22, 'user', 'secretpassword') # Ejecutar un comando de forma remota capturando entrada, salida y error estándar # Mostrar la salida estándar en pantalla # Cerrar la conexión Como se puede observar, utilizar paramiko es sumamente simple y no tiene demasiada ciencia. El único truco a tener en cuenta, es establecer la política por defecto para la localización de la llave del host en el ordenador del cliente. De lo contrario, si no se encontrara la llave del host (host key, usualmente localizada en el archivo ~/.ssh/know_hosts), Python nos arrojaría la siguiente excepción de paramiko: raise SSHException('Unknown server %s' % hostname) paramiko.sshexception: Unknown server 123.456.78.90 Un consejo: para evitar dejar la contraseña almacenada en texto plano (lo cual es de sumo riesgo y sin sentido), éste se le puede solicitar al usuario mediante getpass. clave = getpass('clave: ') Pág. 8

datos = dict(hostname=host, port=puerto, username=usuario, password=clave) Conexión autenticada por par de llaves Para conectarse evitando la utilización de una contraseña, se pudo haber creado previamente, una llave pública que el usuario debió enviar al servidor, para que el servidor la pueda contrarrestar contra la llave privada del usuario. En este caso, solo podrá bastar con no enviar la contraseña para autenticar al usuario: Ejecución remota de comandos como súper usuario Si el usuario root no tiene permitidas las conexiones remotas cómo ejecutar comandos con privilegios de súper usuario si nos estamos conectando con paramiko? Ésta, suele ser una de las dudas más frecuente y sin embargo, la solución no está en paramiko sino en los comandos ejecutados en el propio shell. Véamoslo con un ejemplo en el que listamos las reglas establecidas en iptables con sudo -S: password = getpass('clave: ') Pág. 9

comando = 'echo %s sudo -S iptables -nl' % password entrada, salida, error = ssh_client.exec_command(comando) Guardando los logs de paramiko Con paramiko también es posible registrar toda la actividad que paramiko realice desde el script: password = getpass('clave: ') paramiko.util.log_to_file('paramiko.log') comando = 'echo %s sudo -S iptables -nl' % password entrada, salida, error = ssh_client.exec_command(comando) Manipulando archivos remotos mediante SF TP Con paramiko es posible crear conexiones SFTP directas (sin recurrir al cliente SSH) por medio del objeto SFTPClient(). Aunque también, podremos obtener una instancia de SFTPClient desde el propio cliente SSH (SSHClient) recurriendo al método open_sftp(). paramiko.util.log_to_file('paramiko.log') entrada, salida, error = ssh_client.exec_command('pwd') ruta = salida.read().replace('\n', '') sftp = ssh_client.open_sftp() # Crea un objeto SFTPClient() Pág. 10

# Descargando archivos archivos = sftp.listdir() for archivo in archivos: archivo_remoto = "%(ruta)s/%(nombre)s" % dict(ruta=ruta, nombre=archivo) print "Descargando: %s" % archivo_remoto try: sftp.get(archivo_remoto, "paramii/%s" % archivo) print "copiado archivo %s." % archivo except: print "Fallo al intentar copiar %s. Tal vez es un directorio." % archivo sftp.close() El cliente SFTP de paramiko, provee de los mismos métodos que un cliente FTP normal. Todos los métodos pueden ser consultados desde el manual oficial ingresando en http://www.lag.net/paramiko/docs/paramiko.sftpclient-class.html Entre los métodos provistos por el cliente SFTP, podremos encontrar: Método get(remoto, local) put(local, remoto) chdir(ruta) chmod(ruta, modo) mkdir(ruta, modo=511) rename(anterior, nuevo) remove(archivo) rmdir(ruta) symlink(fuente, destino) Descripción Trae un archivo remoto a un directorio local Envía un archivo local al servidor Cambia el directorio de trabajo actual Cambia permisos en un archivo Crea un directorio Renombra un archivo o directorio Elimina un archivo Elimina un directorio Crea un enlace simbólico Pág. 11