Wenn die Übertragung nicht verschlüsselt ist, warum machst du überhaupt eine Authentifizierung?
Wenn sich ein Rechner authentifiziert hat, kann man doch eine man-in-the-middle-Attacke fahren oder wird das irgendwie durch dein Protokoll verhindert?
Wenn sich deine Sockets per Datei identifizieren, könntest du diese Dateien doch per
ssh/
scp übertragen. So ganz habe ich die Dateien noch nicht verstanden. Wenn ein Rechner mit dem Server redet, haben dann beide die gleiche Datei oder ist das etwas in Richtung public/private Key wie bei
ssh?
Wenn ein neuer Rechner kommt, könnte der doch eine Datei per
scp in einen nur-schreiben-Ordner im Server legen, in der dann das Passwort und ID steht. Dann könnte der Server dem Rechner wieder per
scp einen passenden Schlüssel/Authentifizierung, sonstwas schicken, mit der sich dann der Rechner von da an melden kann.
Nach einer gewissen Zeit kann dann der Server dieses Zertifikat wieder ungueltig machen und der Client muss sich wieder neu anmelden.
Und ein Pythonscript als root? Da musst du schon gut auf deine Rechte aufpassen, nicht dass dir jemand ein exec('rm -rf') (oder ist das Java?) reinschreibt : )
Also zusammengefasst: schau dir mal das public-Key anmelden per
ssh an, damit müsstest du das eigentlich hinbekommen können.
Aber beschreib vielleicht mal ein bischen genauer, wer wann mit welchem Server reden muss.
Erwarte das Beste und bereite dich auf das Schlimmste vor.