2016-05-19 2 views
0

Я видел несколько вопросов и ответов, связанных с этой темой, но я не мог понять, как это сделать.Paramiko, Python, Windows: как подключиться к удаленному компьютеру, а оттуда к NAS с использованием SSH

  1. Что я могу сделать: подключиться к удаленному компьютеру с помощью сценария Python с использованием Paramiko и возвращают информацию, например, пинговать переключатель:

    SSH = рк. SSHClient()

    ssh.set_missing_host_key_policy (pk.AutoAddPolicy())

    ssh.connect ('{}' формат. (IP), порт = ххх, имя пользователя = 'ххх', пароль = 'ххх')

    STDIN, STDOUT, STDERR = \

    ssh.exec_command ('пинг -n 1 xxx.xxx.xx \ п')

    печати ('переключатель Ping: \ п', stdout.readlines())

  2. то, что я хотел бы сделать, но не знаю, как: подключение сразу к компьютеру, а затем с помощью SSH (paramiko.SSHClient()) снова подключиться к другому устройству (в этом case a NAS) и «exec_command», что-то вроде:

    SSH = pk.SSHClient()

    ssh.set_missing_host_key_policy (pk.AutoAddPolicy())

    ssh.connect ('{}' формат. (IP), порт = XXX, username = 'xxx', password = 'xxx') # подключение к компьютеру

    ssh.connect ('{}'. format (IP), port = xxx, username = 'xxx', password = 'xxx') #connect to NAS с компьютера

    stdin, stdout, stderr = \

    ssh.exec_command ('выключение \ п, у \ п') Команда # отправить NAS

    печати ('переключатель Ping: \ п', stdout.readlines())

enter image description here

Возможно ли, кто-нибудь знает способ?

Заранее спасибо.

ответ

0

Вы можете задать вопрос более простым способом. Если я не ошибаюсь, вы пытаетесь подключиться к одной машине с помощью paramiko и с той машины, которую хотите подключить к машине NAS?

Или вы подключаетесь к 1 машине, скажите A, а затем вы хотите, чтобы дескриптор ssh этой машины подключился к машине NAS и сгенерировал еще один дескриптор ssh?

Если это так, я предлагаю вам использовать класс и создать объект для каждого ssh-соединения. Вы можете посмотреть на это:

ssh.py

+0

Вы действительно хотите подключиться к paramiko с удаленного компьютера на NAS? Если нет, то сразу выполните команду на NAS с помощью paramiko handle, используя (ssh <[email protected]>), но для этого вам нужно будет иметь ключи ssh, уже сохраненные на вашем удаленном компьютере. В качестве альтернативы вы можете иметь скрипт, сохраненный на удаленном компьютере (который будет подключаться к NAS и запускать команды), и вы можете вызвать этот скрипт с помощью дескриптора удаленной машины. – LearningNinja

+0

Я проверю этот сценарий, спасибо. –

+0

Возможно, у вас есть пример: ssh <[email protected]>, например, в фрагменте кода выше? –

1

Вы должны открыть туннель, проверить paramiko demo или использовать sshtunnel пакет. Для последних:

import paramiko as pk 
import sshtunnel 

with sshtunnel.open_tunnel(
    remote_computer_ip, 
    ssh_username=remote_username, 
    ssh_password=remote_password, 
    remote_bind_address=(NAS_IP, 22), 
    debug_level='DEBUG', 
) as tunnel: 
    ssh = pk.SSHClient() 
    ssh.set_missing_host_key_policy(pk.AutoAddPolicy()) 
    ssh.connect(NAS_IP, 
       port=tunnel.local_bind_port, # redirected to port NAS_IP:22 
       username=NAS_USER, 
       password=NAS_PASS) 
    (stdin, stdout, stderr) = ssh.exec_command(...) # your stuff 
+0

Спасибо! Я попытался, но я получаю сообщение об ошибке: _ Не удалось подключиться к шлюзу: (remote_host IP) ((10060, «Не удалось выполнить попытку подключения, потому что связанная сторона не ответила должным образом через какое-то время или не удалось установить соединение, потому что подключенный хост не смог ответить ', None, 10060, None)) _ Я добавил порт для удаленного_компьютера, но ошибка сохраняется. –

+0

Ошибка просто говорит, что он не может достичь remote_host IP, doublecheck, позволяющий подробный вывод (см. Править выше). – fernandezcuesta

+0

1-я часть _2016-05-23 13: 24: 00,997 | ИНФО | Пропуск загрузки конфигурационного файла ssh 2016-05-23 13: 24: 01,013 | ИНФО | 0 ключей, загруженных из агента 2016-05-23 13: 24: 01,044 | ИНФО | Подключение к шлюзу: xx.xxx.xxx.xx: xxxx как пользователь 'xxxxx' 2016-05-23 13: 24: 01,044 | DEBUG | Разрешены одновременные подключения: True 2016-05-23 13: 24: 01,044 | DEBUG | Вход с паролем *********** 2016-05-23 13: 24: 07,081 | ИНФО | Открытие туннеля: 0.0.0.0:65496 <> 192.168.0.2:22 2016-05-23 13: 24: 28,125 | ИНФО | Закрытие всех открытых соединений ..._ –

Смежные вопросы