Ich arbeite an einem Skript, das eine neue EC2-Instanz mit boto hochfährt und den Paramiko-SSH-Client verwendet, um Remote-Befehle auf der Instanz auszuführen. Aus welchem Grund auch immer, der Paramiko-Client kann nicht verbunden werden, bekomme ich den Fehler:
%Vor%Ich kann manuell mit der gleichen Schlüsseldatei und dem gleichen Benutzer ssh. Ist jemand mit Paramiko auf Probleme gestoßen? Mein vollständiger Code ist unten. Danke.
%Vor%Ich habe das durch Versuch und Irrtum herausgefunden. Obwohl der Instanzstatus laut boto "läuft", gibt es eine Verzögerung für den Zeitpunkt, zu dem eine SSH-Verbindung tatsächlich zugelassen wird. Das Hinzufügen eines "time.sleep (30)" vor dem "ssh.connect (...)" scheint den Trick für mich zu machen, obwohl dies variieren kann.
Warum nicht stattdessen boto.manage.cmdshell
verwenden?
(Code aus Zeile 152 in ec2_launch_instance.py )
Für verfügbare cmdshell
-Befehle sehen Sie sich die SSHClient
-Klasse von cmdshell an .py .
Ich bin kürzlich auf dieses Problem gestoßen. Der "richtige" Weg wäre, zuerst eine close () zu initiieren und dann die Verbindung wieder zu öffnen. Bei älteren Versionen war close () jedoch defekt.
Bei dieser Version oder später sollte es behoben sein: Ссылка
"Richtige" Methode:
%Vor%Tags und Links python boto amazon-ec2 paramiko