Stack Overflow em Português Asked by Danilo Marquiori on September 27, 2021
O código abaixo (main.py) realiza o acesso a um host através do SSH e cria um tunel para o IP ser acessado por 127.0.0.1:
import paramiko
from sshtunnel import SSHTunnelForwarder
from paramiko import SSHClient
class SSH:
def __init__(self):
self.ssh = SSHClient()
self.ssh.load_system_host_keys()
self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
self.ssh.connect(hostname='127.0.0.1',port='22',username='teste',password='teste')
def exec_cmd(self,cmd):
stdin,stdout,stderr = self.ssh.exec_command(cmd)
if stderr.channel.recv_exit_status() != 0:
print (stderr.read())
else:
print (stdout.read())
server = SSHTunnelForwarder(
'192.168.1.1',
ssh_username="teste2",
ssh_password="teste2",
remote_bind_address=('127.0.0.1', 22),
local_bind_address=('0.0.0.0', 10022)
)
server.start()
if __name__ == '__main__':
ssh = SSH()
stdin,stdout,stderr = ssh.ssh.exec_command("hostname")
retorno = stdout.read()
print (retorno)
server.stop()
Estou tentando acessar uma máquina específica mas para isso, tenho que acessar uma máquina inicialmente por razões de rede.
A topologia acessada pelo Putty é: acessar a conexão inicial (aquela para a qual você criou as regras de rede) e criar um tunel SSH para o IP que deseja. Com isso acessando novamente o putty informando o IP 127.0.0.1 mais a porta do seu tunel chegará a máquina desejada.
Basicamente acesso inicial e vou para outra maquina dentro da rede
----------------------------------------------------------------------
|
-------------+ | +----------+ +---------+
HOST | | | HOST | | HOST |
MAIN.PY | -- SSH ----> | | INITIAL | -- TUNNEL --> | WANTED |
-------------+ | +----------+ +---------+
|
----------------------------------------------------------------------
Conforme declarado no código acima, só consigo acessar o primeiro host. Alguém pode me ajudar?
tente fazer a seguinte alteração:
server = SSHTunnelForwarder(
'192.168.1.1',
ssh_username="teste2",
ssh_password="teste2",
remote_bind_address=('<IP do HOST Destino>', 22),
local_bind_address=('127.0.0.1', 10022) # Aqui você deixa o ip de loopback
)
Espero ter ajudado
Correct answer by Leandro Bigui on September 27, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP