2012-06-19 3 views
3

У меня есть клиент питона чата с использованием сокета, я хотел бы подключиться к серверу чата через сервер SSH, я увидел paramikoКак я подключиться к серверу через SSH туннель в питоне

import paramiko 
ssh = paramiko.SSHClient() 

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 

ssh.connect('<hostname>', username='<username>', password='<password>', key_filename='<path/to/openssh-private-key-file>') 

stdin, stdout, stderr = ssh.exec_command('ls') 
print stdout.readlines() 
ssh.close() 

но я cannt выяснить, как связать это с моим гнездом, как это

from twisted.internet.protocol import ClientFactory 
from twisted.protocols.basic import LineReceiver 
from twisted.internet import reactor 
import sys 

class EchoClient(LineReceiver): 
    end="Bye-bye!" 
    def connectionMade(self): 
     self.sendLine("Hello, world!") 
     self.sendLine("What a fine day it is.") 
     self.sendLine(self.end) 

    def lineReceived(self, line): 
     print "receive:", line 
     if line==self.end: 
      self.transport.loseConnection() 

class EchoClientFactory(ClientFactory): 
    protocol = EchoClient 

    def clientConnectionFailed(self, connector, reason): 
     print 'connection failed:', reason.getErrorMessage() 
     reactor.stop() 

    def clientConnectionLost(self, connector, reason): 
     print 'connection lost:', reason.getErrorMessage() 
     reactor.stop() 

def main(): 
    factory = EchoClientFactory() 
    reactor.connectTCP('localhost', 8000, factory) 
    reactor.run() 

if __name__ == '__main__': 
    main() 

так Как я могу подключиться к серверу через туннель ssh в python?

+0

Создайте туннель ssh на cmdline, затем выполните перенос портов и подключитесь к порту прослушивания локальной стороны. –

+0

cann't это передать его через сам python? –

ответ

1

Вы всегда можете использовать Twisted Conch, и у них есть examples внедрения простого SSH-клиента/сервера, который может быть полезен.

1

Вы можете использовать метод invoke_shell() на SSHClient, он возвращает сокет-подобный объект (канал), поэтому вы можете создать новый туннель ssh так же, как вы это делаете в оболочке. И все следующие соединения могут быть доступны через этот канал.

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