Paramiko es una biblioteca de Python que realiza una conexión con un dispositivo remoto a través de SSh. Paramiko está utilizando SSH2 como reemplazo de SSL para establecer una conexión segura entre dos dispositivos. También es compatible con el modelo de cliente y servidor SFTP.
Autenticando la conexión SSH
Para autenticar una conexión SSH, debemos configurar una clave RSA SSH privada (que no debe confundirse con OpenSSH). Podemos generar una clave usando el siguiente comando:
$ssh-keygen -t rsa
Esto nos pedirá que proporcionemos un nombre para nuestra clave. Asígnele el nombre que desee y genere un par de claves RSA pública/privada. Introduzca el nombre con el que desea guardar la clave.
es decir, /home/nombre de usuario/.ssh/id_rsa
A continuación, se le pedirá que proporcione una contraseña (no dude en dejarlo en blanco).
Ahora que tenemos nuestra clave, debemos copiarla en nuestro host remoto. La forma más fácil de hacer esto es usando ssh-copy-id :
$ssh-copy-id -i ~/.ssh/mykey nombredeusuario@mi_host_remoto.org
Si desea verificar qué claves ya tiene, puede encontrarlas en el directorio .ssh de su sistema :
~/.sshCheck
Estamos buscando claves que comiencen con el siguiente encabezado:
—–COMENZAR CLAVE PRIVADA DE RSA—–
—–FIN CLAVE PRIVADA RSA—–
SSH (Secure Shell) es una credencial de acceso que se utiliza en el protocolo SSH. En otras palabras, es un protocolo de red criptográfico que se utiliza para transferir datos cifrados a través de la red. Le permite conectarse a un servidor, o varios servidores, sin tener que recordar o ingresar su contraseña para cada sistema que va a iniciar sesión de forma remota de un sistema a otro.
Instalación de Paramiko
Para instalar la biblioteca paramiko, ejecute el siguiente comando en el símbolo del sistema. paramiko necesita criptografía como módulo de dependencia. Así que ejecute ambos comandos en el símbolo del sistema:
pip instalar paramiko
pip instalar criptografía
Nota: Para obtener más información, consulte Instalar Paramiko en Windows y Linux
Una vez completada la instalación, ahora nos conectaremos con un servidor SSH remoto usando la biblioteca paramiko. El fragmento de código para un equivalente se proporciona a continuación:
Python3
import paramiko # Create object of SSHClient and # connecting to SSH ssh = paramiko.SSHClient() # Adding new host key to the local # HostKeys object(in case of missing) # AutoAddPolicy for missing host key to be set before connection setup. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect('1.1.1.2', port=22, username='UserName', password='PassWord', timeout=3) # Execute command on SSH terminal # using exec_command stdin, stdout, stderr = ssh.exec_command('show ip interface brief')
Tomando esto como base, uno puede automatizar las cosas de iniciar sesión en el servidor SSH remoto, ejecutar comandos y capturar los resultados, simplemente usando una secuencia de comandos de python.
Con esto, puede crear una conexión SSH a otro host desde su aplicación, con esta conexión puede enviar sus comandos al host y recuperar la salida.
A continuación se muestra un programa para representar lo mismo. Aquí estamos imprimiendo el nombre de usuario.
Programa:
Python3
import paramiko output_file = 'paramiko.org' def paramiko_GKG(hostname, command): print('running') try: port = '22' # created client using paramiko client = paramiko.SSHClient() # here we are loading the system # host keys client.load_system_host_keys() # connecting paramiko using host # name and password client.connect(hostname, port=22, username='geeksForgeeks', password='geeksForgeeks') # below line command will actually # execute in your remote machine (stdin, stdout, stderr) = client.exec_command(command) # redirecting all the output in cmd_output # variable cmd_output = stdout.read() print('log printing: ', command, cmd_output) # we are creating file which will read our # cmd_output and write it in output_file with open(output_file, "w+") as file: file.write(str(cmd_output)) # we are returning the output return output_file finally: client.close() paramiko_GKG('10.10.10.1', 'uname')
Producción:
$ python GFG_paramiko.py running [log printing: ,'uname','Linux\n']
Entonces, al ejecutar nuestro archivo Python, obtenemos una declaración impresa con el comando uname y Linux como salida. El mismo programa se puede modificar para diferentes comandos para obtener la información requerida.
Publicación traducida automáticamente
Artículo escrito por deepanshu_rustagi y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA