Ich habe viele ähnliche Fragen hier in SO gefunden, aber jede von ihnen hat mir geholfen, auch dieses Problem scheint einfach zu sein.Ich kann SSH mit Paramiko nicht mit einer Google Compute Engine-Instanz verbinden
Ich versuche, eine Verbindung mit einer remote Google Compute Engine-Instanz über SSH (ich möchte SFTP verwenden) mit Paramiko. Unten ist mein Code:
client = paramiko.SSHClient()
client.load_system_host_keys()
client.connect('External_IP_Get_In_GCE_panel', username='myuser')
stdin, stdout, stderr = client.exec_command('ls')
for line in stdout:
print('... ' + line.strip('\n'))
client.close()
Mit diesem Code habe ich den Fehler
PasswordRequiredException: Private Schlüsseldatei
verschlüsselt ist
Als ich client.connect('External_IP_Get_In_GCE_panel', username='myuser', password='')
versucht der Fehler ist:
BadAuthenticationType: ('Ungültiger Authentifizierungstyp', [u'publickey ']) (allowed_types = [u'publickey '])
Mein SSH-Schlüssel für den Zugriff auf die Google Compute-Engine hat kein Kennwort. Ich kann die gcloud compute ssh instance-name
verwenden und auch auf SFTP durch Filezilla ohne Probleme zugreifen.
Wie gesagt, ich habe viele Alternativen hier in SO ausprobiert, aber alle haben mir geholfen. Im Folgenden sind drei andere Versionen des Codes:
Mit der Taste
key = paramiko.RSAKey(data=base64.b64decode(b"""AAAAB3Nza..."""))
client = paramiko.SSHClient()
client.get_host_keys().add('External_IP_Get_In_GCE_panel', 'ssh-rsa', key)
client.connect('External_IP_Get_In_GCE_panel', username='myuser', password='')
# I got the key using ssh-keyscan `External_IP_Get_In_GCE_panel`in my local machine
anderen lib Mit
key = paramiko.RSAKey(data=decodebytes(keydata))
cnopts = pysftp.CnOpts()
cnopts.hostkeys.add('External_IP_Get_In_GCE_panel', 'ssh-rsa', key)
with pysftp.Connection('External_IP_Get_In_GCE_panel', username='myuser', cnopts=cnopts) as sftp:
with sftp.cd('../directory'):
sftp.get('remote_file')'''
Mit dem SSH-Schlüssel-Datei
self.client = paramiko.SSHClient()
self.client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
self.client.connect(hostname="External_IP_Get_In_GCE_panel", username="myuser", key_filename=os.path.expanduser('~/.ssh/ssh_key_file'), password='') # also tried ssh_key_file.pub
In allen diese Versionen (und einige andere) Ich habe versucht, password=''
, password=None
zu verwenden und kein Kennwortargument zu senden. Die Ergebnisse sind immer die gleichen Erros oben.
Irgendein Tipp über was ich falsch mache?
Wie gesagt, der SSH-Schlüssel wurde ohne Passwort erstellt, also habe ich nichts, um diesen Parameter zu füllen, und 'password = ''' mit leerer Zeichenfolge löst den gleichen Fehler wie der verschlüsselte private Schlüssel aus. – James
@James scheint es ein Passwort zu haben - vielleicht verwechseln Sie "kein Passwort" mit "sshagent merkt sich das Passwort" –
@James oder versuchen Sie ein leeres Passwort im Aufruf von 'RSAKey'. –