Usando canais com o Paramiko

Estou trabalhando na conversão de uma ferramenta de Ruby para Python, e a versão Ruby usaNet :: SSH para conectar-se a um host remoto, enviar comandos e recuperar respostas / dados. Eu tenho usado o paramiko na contraparte do Python, mas estou confuso quanto ao objetivo deCanais em paramiko. Pelo que li até agora, parece-me que um canal (que usa umparamiko Transport) é usado para manter uma conexão persistente com o SSH, em vez de executar um comando e encerrar a conexão.

É necessário um canal? Qual é a pilha necessária para abrir uma conexão SSH persistente com um host, para enviar e receber vários comandos sequencialmente e obter as respostas; quando terminar, feche manualmente a conexão?

Estas são as duas principais linhas que estou tendo problemas para traduzir para Python, porque não tenho certeza se um "Canal" Ruby mapeia diretamente para um "Canal" paramiko:

@ssh_connection = Net::SSH.start(@linux_server_name, 
                        @server_user_name, 
                        :password => @password, 
                        :paranoid => false)

e mais tarde no código

@channel = @ssh_connection.open_channel do |new_channel|

Editar: Para explicar melhor minha pergunta, consegui conectar-me a um host remoto usando o paramiko e executar vários comandos seqüenciais e obter seus resultados sem usar um transporte ou um canal; então, novamente, quais são as razões para usar um canal no paramiko?

def connect(self):
    ssh_connection = paramiko.SSHClient()
    ssh_connection.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh_connection.connect(self.linux_server_name)
    stdin, stdout, stderr = ssh_connection.exec_command("ls -l")
    print(stdout.readlines())
    stdin, stdout, stderr = ssh_connection.exec_command("ls -l /tmp")
    print(stdout.readlines())
    ssh_connection.close()

questionAnswers(1)

yourAnswerToTheQuestion