Python und SecureFTP

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Freitag 14. Januar 2005, 22:33

Hab gerade eine LOG-Funktion entdeckt!!!

Code: Alles auswählen

paramiko.util.log_to_file("D:\\temp\\paramiko.log", level=10)


Hier die LOG Datei beim Server mit dem paramiko.ssh_exception.SSHException: Authentication failed.

INF [20050114-22:28:16] paramiko.transport: Connected (version 2.0, client OpenSSH_3.9p1)
DEB [20050114-22:28:16] paramiko.transport: Write packet <kexinit>, length 318
DEB [20050114-22:28:17] paramiko.transport: Read packet <kexinit>, length 625
DEB [20050114-22:28:17] paramiko.transport: Ciphers agreed: local=aes128-cbc, remote=aes128-cbc
DEB [20050114-22:28:17] paramiko.transport: kex algos:['diffie-hellman-group-exchange-sha1', 'diffie-hellman-group14-sha1', 'diffie-hellman-group1-sha1'] server key:['ssh-rsa', 'ssh-dss'] client encrypt:['aes128-cbc', '3des-cbc', 'blowfish-cbc', 'cast128-cbc', 'arcfour', 'aes192-cbc', 'aes256-cbc', 'rijndael-cbc@lysator.liu.se', 'aes128-ctr', 'aes192-ctr', 'aes256-ctr'] server encrypt:['aes128-cbc', '3des-cbc', 'blowfish-cbc', 'cast128-cbc', 'arcfour', 'aes192-cbc', 'aes256-cbc', 'rijndael-cbc@lysator.liu.se', 'aes128-ctr', 'aes192-ctr', 'aes256-ctr'] client mac:['hmac-md5', 'hmac-sha1', 'hmac-ripemd160', 'hmac-ripemd160@openssh.com', 'hmac-sha1-96', 'hmac-md5-96'] server mac:['hmac-md5', 'hmac-sha1', 'hmac-ripemd160', 'hmac-ripemd160@openssh.com', 'hmac-sha1-96', 'hmac-md5-96'] client compress:['none', 'zlib'] server compress:['none', 'zlib'] client lang:[''] server lang:[''] kex follows?False
DEB [20050114-22:28:17] paramiko.transport: using kex diffie-hellman-group1-sha1; server key type ssh-rsa; cipher: local aes128-cbc, remote aes128-cbc; mac: local hmac-sha1, remote hmac-sha1
DEB [20050114-22:28:17] paramiko.transport: Write packet <kex30>, length 134
DEB [20050114-22:28:17] paramiko.transport: Read packet <kex31>, length 434
DEB [20050114-22:28:17] paramiko.transport: Write packet <newkeys>, length 1
DEB [20050114-22:28:17] paramiko.transport: Read packet <newkeys>, length 2
DEB [20050114-22:28:17] paramiko.transport: Switch to new keys ...
DEB [20050114-22:28:17] paramiko.transport: Attempting password auth...
DEB [20050114-22:28:17] paramiko.transport: Write packet <service-request>, length 17
DEB [20050114-22:28:17] paramiko.transport: Read packet <service-accept>, length 18
DEB [20050114-22:28:17] paramiko.transport: userauth is OK
DEB [20050114-22:28:17] paramiko.transport: Write packet <userauth-request>, length 51
DEB [20050114-22:28:17] paramiko.transport: Read packet <userauth-failure>, length 46
INF [20050114-22:28:17] paramiko.transport: Authentication failed.
DEB [20050114-22:28:17] paramiko.transport: EOF in transport thread


Beim anderen Server kommt das raus:
DEB [20050114-22:32:20] paramiko.transport: Banner: 220 serverXXX.webpack.hosteurope.de FTP server ready
DEB [20050114-22:32:20] paramiko.transport: Banner: 500 SSH-2.0-PARAMIKO_1.1 not understood
DEB [20050114-22:34:43] paramiko.transport: Banner: 421 Login Timeout (150 seconds): closing control connection.
DEB [20050114-22:34:43] paramiko.transport: EOF in transport thread
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Freitag 14. Januar 2005, 23:42

jens hat geschrieben:Also ich hab zwei Server mit den ich es testen kann... Und ich kann eine Verbindung mir FileZilla und dem User/Passwort aufbauen...

Der eine Server ist vom Typ "SFTP über SSH2", bei dem bekomme ich SSHException: Authentication failed
Der andere Server ist vom Typ "FTP über SSL (Explizite Verschlüsselung)"

Welche Server Einstellungen hast du denn?

Lieber Jens, du verwechselst SFTP mit FTPS. SFTP ist ein Datei-hin-und-her-schubs-Subsystem von SSH2, das heißt, es wird durch SSH Verschlüsselt und hat mit FTP nichts zu tun. FTPS ist wie HTTPS ein verpacktes FTP (wie auch HTTP), das ganz normal funktioniert, bis auf das es in einem SSL (nicht SSH) Tunnel geschürtzt ist. Also kann man mit paramiko nicht auf FTPS zugreifen, da es ja kein SSL unterstützt. Dazu bräuchtest du stunnel oder PyOpenSSL.

Ich habe zwei SSH2 Server, einmal meinen beschriebenen Router und einmal einen Server im Internet mit OpenSSH 3.6.1p2, zu dem ich mit dem beschriebenen Script verbinden kann. Zum benutzen von SFTP Verbindungen solltest du mal WinSCP im SFTP-only Modus nutzen und uns sagen, was es sagt.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Samstag 15. Januar 2005, 13:02

Aha! Ich wunderte mich eh schon immer was die verschiedenen Servertypen in Filezilla zu bedeuten haben. :oops: Danke für deine Ausführungen...

Ich hab mal WinSCP benutzt:
. Server version: SSH-2.0-OpenSSH_3.9p1
. We claim version: SSH-2.0-WinSCP-release-3.7.1
. Using SSH protocol version 2
. Doing Diffie-Hellman group exchange
. Doing Diffie-Hellman key exchange
. Host key fingerprint is:
. ssh-rsa 1024 78:bc:89:7a:40:3a:e1:3e:87:6a:1b:4d:66:1e:ba:a9
. Initialised AES-256 client->server encryption
. Initialised AES-256 server->client encryption
. Initialised HMAC-SHA1 client->server MAC algorithm
. Initialised HMAC-SHA1 server->client MAC algorithm
! Using username "XXX".
. Keyboard-interactive authentication refused
. Session password prompt (XXX's password: )
. Using stored password.
. Sent password
! Access denied
. Access denied
. Keyboard-interactive authentication refused
. Session password prompt (XXX's password: )
. Asking user for password.
. Unable to authenticate
. Attempt to close connection due to fatal exception:
* Unable to authenticate
. Closing connection.
* (ESshFatal) Authentication failed.
Zuletzt geändert von jens am Samstag 15. Januar 2005, 13:13, insgesamt 2-mal geändert.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Samstag 15. Januar 2005, 13:10

Dann ist es kein Python Problem, sondern das Problem, dass du einfach keinen Zugriff auf den Server hast.

Meine Theorie: Normalerweise verbindest du dich mit dem Server per FTPS, was auch klappt, da der FTPd des Servers dich als User mit Passwort kennt. Jetzt hast du aber versucht, dich per SFTP zu verbinden und zufälligerweise ist auf dem Server auch ein SSHd, der die Verbindung auch startet. Da du aber dem SSHd den Usernamen und das Passwort des FTPS Accounts gibst und es aber keinen solchen User mit einem solchen Passwort im System (/etc/passwd, oder auch im SFTP Subsystem) gibt SSHd sagt, dass du nicht authorisiert bist.

Also das wäre eine Erklärung, denn so wie ich das sehe ist bei dir technisch alles eigentlich okay.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Samstag 15. Januar 2005, 13:14

Hab hier mal mich mit FileZilla mit Debugmeldungen verbunden (Die Socket Meldungen hab ich rausgeschnitten):

Status: Verbinden mit XXX:22...
Trace: FzSFtp.exe: FzSFtp started and initialized.
Status: Verbunden mit XXX:22, SFTP-Verbindung wird initialisiert...
Befehl: CONNECT XXX:22
Trace: FzSFtp.exe: Ssh.c(2117): Server version: SSH-2.0-OpenSSH_3.9p1
Trace: FzSFtp.exe: Ssh.c(2153): We claim version: SSH-2.0-PuTTY-FZ-Local: Oct 27 2004 19:41:19
Trace: FzSFtp.exe: Ssh.c(2155): Using SSH protocol version 2
Trace: FzSFtp.exe: Ssh.c(4520): Doing Diffie-Hellman group exchange
Trace: FzSFtp.exe: Ssh.c(4548): Doing Diffie-Hellman key exchange
Trace: FzSFtp.exe: Ssh.c(4605): Host key fingerprint is:
Trace: FzSFtp.exe: Ssh.c(4606): ssh-rsa 1024 78:bc:89:7a:40:3a:e1:3e:87:6a:1b:4d:66:1e:ba:a9
Trace: FzSFtp.exe: Ssh.c(691): Initialised AES-256 client->server encryption
Trace: FzSFtp.exe: Ssh.c(691): Initialised AES-256 server->client encryption
Trace: FzSFtp.exe: Ssh.c(691): Initialised HMAC-SHA1 client->server MAC algorithm
Trace: FzSFtp.exe: Ssh.c(691): Initialised HMAC-SHA1 server->client MAC algorithm
Trace: FzSFtp.exe: Ssh.c(5356): Keyboard-interactive authentication refused
Trace: FzSFtp.exe: Ssh.c(5615): Sent password
Trace: FzSFtp.exe: Ssh.c(5001): Access granted
Trace: FzSFtp.exe: Ssh.c(5699): Opened channel for session
Trace: FzSFtp.exe: Ssh.c(6147): Started a shell/command


Demnach ist es doch eigentlich das selbe was WinSCP macht, oder?
Und wie geschrieben, ich hab in FileZilla "SFTP über SSH2" als Servertyp ausgewählt...
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Samstag 15. Januar 2005, 13:41

Strange.. Der Username und das Passwort sind exakt gleich, also nicht irgendwelche Leerzeichen oder so zu viel?
Eigentlich kann ich mir das nicht wirklich erklären, aber wenn du herausfindest wie due WinSCP zum laufen bekommst, dann wird paramiko vermutlich auch auf diese Weise laufen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
Mawilo
User
Beiträge: 446
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Beitragvon Mawilo » Dienstag 1. Februar 2005, 21:35

Hallo,

ich habe mir den Ordner paramiko nach site-packages gelegt.
Wenn ich die Datei ausführen möchte, bekomme ich folgende Fehlermeldung:

Code: Alles auswählen

AttributeError: 'module' object has no attribute 'Transport'

:oops:

fehlt da noch irgend was?

Grüße

Stephan
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Mittwoch 2. Februar 2005, 07:30

Also Transport ist ein Methode von paramiko...
Wenn du einen import paramiko machen kannst, dann sollte auch t = paramiko.Transport( ServerAdr ) gehen...
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Mittwoch 2. Februar 2005, 13:48

In site-packages? Nun, installiert oder einfach nur kopiert?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
Mawilo
User
Beiträge: 446
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Beitragvon Mawilo » Mittwoch 2. Februar 2005, 19:44

nur kopiert

Stephan
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Mittwoch 2. Februar 2005, 21:06

Löschs mal, erstell mit python setup.py bdist_wininst ein Setup und installier das mal. Vielleicht hilft das ja.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
Mawilo
User
Beiträge: 446
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Beitragvon Mawilo » Dienstag 8. März 2005, 20:14

ich bekomms net hin.

wenn ich das erste mal die Datei starte, bekomme ich folgende Fehlermeldung:

Code: Alles auswählen

File "C:\Python23\lib\site-packages\paramiko\rsakey.py", line 27, in ?
    from Crypto.Cipher import DES3
ImportError: cannot import name DES3


Starte ich die Datei ein weiteres mal, so bekomme ich diese Fehlermeldung:

Code: Alles auswählen

t = paramiko.Transport("xxxxxxxxxxx")
AttributeError: 'module' object has no attribute 'Transport'


Stephan
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Dienstag 8. März 2005, 20:24

Deine paramiko Installation ist einfach hinüber, so einfach ist es. Einmal findet er DES3 nicht, einmal Transport. Das ist aber bei einem richtig installiertem paramiko auf jedem Fall dabei.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
Mawilo
User
Beiträge: 446
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Beitragvon Mawilo » Dienstag 8. März 2005, 21:00

kannst du mir Deinen paramiko-Ordner (unter site-packages) zumailen?

Stephan
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Dienstag 8. März 2005, 21:06

Wie wärs wenn du folgendes machst:
paramiko as site-packages löschen.

Dann die sauberen Paramiko Quellen runterladen. Diese entpacken und in den paramiko-1.2 ordner gehen. Dort ein python setup.py bdist_wininst ausführen und es durchlaufen lassen. Das dauert ein wenig, geht aber komplett von alleine durch (distutils). Nun gehst du in den neu erstellten dist Ordner und führst dort die neue EXE aus. Das sollte das Problem beheben.
My god, it's full of CARs! | Leonidasvoice vs Modvoice

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder