
Ich habe zwei Schlüssel auf PuTTY generiert: öffentlich und privat. Mit dieser Software unter Windows kann ich mich wie gewohnt mit dem Server verbinden.
Dann habe ich versucht, diese Dateien auf meine Ubuntu-Maschine (21.04) zu kopieren und mich angemeldet, um den privaten Schlüssel zu laden (Putty öffnen, schreiben user@hostname
und dann den privaten Schlüssel bei SSH>Auth laden), aber die Verbindung kann nicht hergestellt werden, da sie vom Server abgelehnt wird und dieser Fehler auftritt:
Unable to load key file '~/private_key.ppk' (PuTTY key format too new).
Und ein neues Fenster erscheint mit der Meldung:
No supported authentication methods available (server sent: publickey)
Wie der erste Fehler vermuten lässt, bleibt nach der Konvertierung des privaten Schlüssels in das OpenSSH-PEM-Format über PuTTYgen und dem anschließenden Laden der Datei in SSH/Auth die Meldung „Nicht unterstützt“ bestehen:
Unable to use key file '~/private_key_openssh' (OpenSSH SSH-2 private key (old PEM format) ).
Gibt es eine Möglichkeit, diese Schlüssel unter Ubuntu zu verwenden? Vielleicht über OpenSSH?
Einige nützliche Informationen:
- Neu installierte Version von Ubuntu
- Kitt 0,74
Die Ausgabe beim Versuch mitssh -i ~/.ssh/private_key.ppk user@hostname
Schlüssel „~/.ssh/private_key.ppk“ laden: ungültiges Format Benutzer@Hostname: Berechtigung verweigert (öffentlicher Schlüssel).
Antwort1
Die Antworten/Kommentare von Adonis und Thomas sind grundsätzlich richtig, aber es fehlen einige Details, die ich brauchte, um dies in der Praxis zum Laufen zu bringen. Da ich nicht genug Reputation habe, um einen Kommentar abzugeben, werde ich die Details über diese Antwort hinzufügen.
Exportieren Sie das Putty PPK in das OpenSSH-Format.
Öffnen Sie dazu PuttyGen, laden Sie den privaten Schlüssel, gehen Sie dann zum Menü „Konvertierungen“ und wählen Sie „OpenSSH-Schlüssel exportieren“
Verwenden des OpenSSH-Schlüssels unter Ubuntu (oder Derivaten)
Wenn Sie es direkt für SSH verwenden, können Sie es wie von Adonis erwähnt verwenden. Aber was, wenn Sie es indirekt benötigen, z. B. für die Verwendung mit Quellcodeverwaltungssystemen?
Kopieren Sie es in Ihren ~/.ssh-Ordner unter Linux. Sie müssen diesen Ordner möglicherweise erstellen, wenn Sie SSH auf Ihrer Linux-Box noch nie verwendet haben. Wenn Sie das .ssh-Verzeichnis erstellen, müssen Sie dies tun, chmod 0700 ~/.ssh
damit das SSH-Tool davon ausgeht, dass das Verzeichnis wirklich privat für Sie ist.
Wenn Sie die Schlüsseldatei von Windows kopiert haben, öffnen Sie jetzt ein Terminal im Ordner ~/.ssh und führen Sie aus chmod 400 [private key file name]
. Dies ist notwendig, da die Standardberechtigungen (beim Kopieren von Windows) 770 betragen. Das SSH-Dienstprogramm wird Ihnen mitteilen, dass dies zu freizügig ist und dass der Schlüssel ignoriert wird. Leider wird Ihnen nicht direkt gesagt, wie Sie die Probleme beheben können, aber 400 Berechtigungen, die „für mich lesbar, für niemanden sonst verfügbar“ bedeuten, werden das Problem beheben.
Führen Sie nun in einem Terminal aus eval $(ssh-agent)
. Dadurch wird Ihr lokaler SSH-Agent geöffnet und Sie können Schlüssel hinzufügen, die von anderen Programmen, wie z. B. der Quellcodeverwaltung, abgerufen werden können.
Führen Sie abschließend aus ssh-add ~/.ssh/[private file key name]
. Sofern Sie daran gedacht haben, Berechtigungen festzulegen, sollte es funktionieren und Sie sollten git/hg/usw. mit Ihrem SSH-Schlüssel verwenden können.
Antwort2
Verbindung hergestellt!
Wie von Thomas Ward vorgeschlagen, war das Laden der private_key-Datei in PuTTYgen unter Windows und das Kopieren des öffentlichen Schlüssels in die authorized-keys
Datei ein erster Schritt.
Darüber hinaus können Sie die private_key-Datei (erste Option) im OpenSSH-Format in eine private_OpenSSH-Datei exportieren und sie anschließend in das Verzeichnis ~/.ssh verschieben, um die Berechtigungen mit Folgendem zu ändern:
chmod 400 private_OpenSSH
Ermöglichte mir endlich die Kontaktaufnahme mit:
ssh -i ~/private_OpenSSH user@hostname