Paramiko - co najpierw usatwic, channel czy transport

0

Hej , chciałbym żeby skrypt łączył się z serwerem openSSH bez uzycia klasy CLIENTSSH() i mam problem w zrozumieniu zależności miedzy klasa Channel(), a Tunnel().

Czy ktoś umiałby mi wyjaśnić jak używać klasy Channel() i Transport() w bibliotece Paramiko ?. Nie mogę się doczytać i troszkę się po gubiłem, czy najpierw trzeba ustawić klasę Channel ,a dopiero potem użyć klasy Transport do komunikacji z serwerem ? czy może na odwrót. A może ja coś pokiełbasiłem i w ogóle one są od siebie nie zależne, ale tyle ile wydedukowałem z dokumentacji to one ze sobą współpracując. Dziękuje za jakiekolwiek podpowiedzi :)

Działam na najnowszym Ubuntu jeśli ma to jakieś znaczenie.

0

Dawno nie używałem już, ale za dokumentacją:

" class paramiko.channel.Channel(chanid)
A secure tunnel across an SSH Transport. A Channel is meant to behave like a socket, and has an API that should be indistinguishable from the Python socket API."

Czyli masz kanał (channel) w medium transportowym (transport SSH).
Można to ująć tak (o ile się nie mylę): transport to połączenie, a channel to tunel w tym połączeniu (ssh, sftp, itd.).

0
import paramiko

kf = "/home/username/.ssh/identityfile"
transport = paramiko.Transport(("localhost", 22))
k = paramiko.RSAKey.from_private_key(open(kf), "passwd")
transport.connect(username="username", pkey=k)
sftp = paramiko.Channel(transport)
print(dir(sftp))

Używam tutaj klucza RSA. Z ed25519 nie zadziała (nie wiem czy dorobili już obsługę).

0

Ok, dzieki. Dam znac gdy to ogarne !! :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1