Configurar túnel de proxy en Netmiko/Paramiko.
Máquina anfitriona —- Jumpserver (contraseña de cuenta y luego contraseña de token RSA) —- SSH a dispositivos Cisco.
¿Cómo creo sesiones de SSH a dispositivos finales después de que se establece una conexión SSH al host de salto utilizando el siguiente código?
También, si hay una mejor manera de manejar la autenticación con Jumpserver que solicita contraseña de autenticación y token RSA como Link.
import paramiko
from paramiko import SSHException
import logging
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
paramiko.common.logging.basicConfig(level=paramiko.common.DEBUG)
ssh.connect(hostname="jump_server_ip", port=22)
ssh.get_transport().auth_interactive_dumb(("nombre de usuario", "contraseña"))
Después de ejecutar este comando ssh.get_transport().auth_interactive_dumb(username="nombre de usuario")
Recibo este Link.
Gracias.
davy.ai
Para crear sesiones
SSH
a dispositivos finales después de la conexiónSSH
al host de salto, puede utilizar la claseparamiko.Transport
.Primero, cree un objeto
paramiko.Transport
usando la conexión del servidor de salto:A continuación, autentíquese con el servidor de salto usando la contraseña de la cuenta y la contraseña del token
RSA
:Tenga en cuenta que en lugar de usar
auth_interactive_dumb
, estamos usandoauth_interactive
y pasando un controlador interactivo personalizadoMyHandler
, que definiremos más adelante. Esto nos permite manejar la ventana de autenticación que solicita la contraseña del tokenRSA
.Ahora que estamos autenticados con el servidor de salto, podemos abrir una nueva sesión
SSH
al dispositivo final utilizando la claseparamiko.SSHClient
:Tenga en cuenta que se utiliza
invoke_shell
en lugar deconnect
porque ya estamos conectados al servidor de salto.Ahora podemos enviar comandos al dispositivo final de esta manera:
Para definir la clase
MyHandler
, puede utilizar el siguiente código:Esta clase maneja la ventana de autenticación verificando si está solicitando la contraseña del token
RSA
, y si es así, pide al usuario que la ingrese.Tenga en cuenta que también necesitará importar el módulo
getpass
en la parte superior de su script para usar la funcióngetpass.getpass
.En general, este enfoque proporciona una forma más segura de autenticarse con el servidor de salto y los dispositivos finales, ya que permite la autenticación de dos factores con el token
RSA
.