Может быть кто-то поможет мне решить проблему. В настоящий момент я подключаюсь по ssh на удаленную машину и с нее подключаюсь по ssh к объекту, который на ней работает и далее выполняю специфические для него команды.
Выглядит это примерно вот так
ssh -i filename username_1@hostname1 ssh -l username_2 localhost -p 5555 >>> My command
Я хочу автоматизировать этот процесс через paramiko, но что-то пошло не так. Гуглил решения на стэковерфлоу. Код получился следующий:
#!/usr/bin/env python # -*- coding: utf-8 -*- import paramiko as ssh class SSHTool(): def __init__(self, host, user, auth, via=None, via_user=None, via_key=None): if via: t0 = ssh.Transport(via) t0.start_client() t0.auth_publickey(via_user, via_key) channel = t0.open_channel('direct-tcpip', host, ('127.0.0.1', 1234)) self.transport = ssh.Transport(channel) else: self.transport = ssh.Transport(host) self.transport.start_client() self.transport.auth_password(user, auth) def run(self, cmd): ch = self.transport.open_session() ch.set_combine_stderr(True) ch.exec_command(cmd) retcode = ch.recv_exit_status() buf = '' while ch.recv_ready(): buf += ch.recv(1024) return (buf, retcode) host = ('localhost', 5555) via_host = ('hostname1', 22) pk = ssh.RSAKey.from_private_key(open('./filename')) ssht = SSHTool(host, 'username_2', 'password', via=via_host, via_user='username_1', via_key=pk) print ssht.run('My command')
В итоге получаю ошибку, к которой не могу найти решения:
No handlers could be found for logger "paramiko.transport" Traceback (most recent call last): File "C:\Users\kirill.anisimov\Documents\Corda\sshish\ssh_tool.py", line 33, i n <module> ssht = SSHTool(host, 'user', 'password', via=via_host, via_user='kanisimov', via_key=pk) File "C:\Users\kirill.anisimov\Documents\Corda\sshish\ssh_tool.py", line 12, i n __init__ channel = t0.open_channel('direct-tcpip', host, ('127.0.0.1', 1234)) File "C:\Python27\lib\site-packages\paramiko\transport.py", line 1017, in open _channel raise e paramiko.ssh_exception.ChannelException: ChannelException(1, 'Administratively p rohibited')
Может быть кто-то подскажет в чем ошибка?
Или предложит другое решение для данной задачи.
Спасибо!