Antwort1
Ich denke, Sie verwenden wahrscheinlich nicht Cygwin ssh-keygen
. Was wird which ssh-keygen
angezeigt? Das Nicht-Cygwin ssh-keygen
auf meinem System (das mit PuTTY oder WinSCP installiert wurde, ich kann mich nicht erinnern, welches davon) zeigt dasselbe Verhalten, kann aber mit Folgendem zum Laufen gebracht werden:
ssh-keygen -t rsa -f /cygwin64/home/me/.ssh/id_rsa -N "passphrase"
Notiz:
- Geben Sie anstelle von Ihre eigene Passphrase ein
passphrase
oder-N ""
verwenden Sie eine leere Passphrase. - Der Pfad hat ein seltsames Format und ist unter verwurzelt
C:
. Ich habe Cygwin unter installiertC:\cygwin64
, daher landen die Schlüssel~/.ssh
in diesem Beispiel in meinem Cygwin-Home-Verzeichnis (). Machen Sie.ssh
zuerst Folgendes.
Oder Sie könnten einfach Cygwin installieren ssh-keygen
. which ssh-keygen
sollte dann zurückgeben /usr/bin/ssh-keygen
.
Antwort2
Verwenden Sie Schrägstriche für Cygwin-Pfade. Der umgekehrte Schrägstrich ist das „Escape-Zeichen“ in Linux (und daher auch in Cygwin).
$ cygpath --Hilfe
cygpath
hilft beim Konvertieren von Pfaden und Dateinamen für/von/nach Cygwin.
Tipp: Verwenden Sie Linux-Pfade in Cygwin und Windows-Pfade in Windows.
Ungetestetes Beispiel:
$ cygpath -u "C:\Users\User/.shhs/id_rsa" /cygdrive/c/UsersUser/.shhs/id_rsa
Was Sie in Ihrem Beispiel () eingegeben haben,
C:\Users\User/.shhs/id_rsa
ist am Ende gleich C:UsersUser/.shhs/id_rsa
-, was höchstwahrscheinlich nicht das ist, was Sie wollen.
Das „Escape-Zeichen“ entfernt die spezielle Bedeutung des nachfolgenden Zeichens (normalerweise ein Sonderzeichen) und belässt das Zeichen buchstäblich so, wie es ist, in der Eingabe (dazu gehört noch mehr, aber genug hier).
Beispiel:
$ echo \$PATH=$PATH $PATH=… $
Antwort3
Erwägen Sie die VerwendungMicrosoft-Build von OpenSSH. Nurherunterladen OpenSSH-Win32.zip
oder OpenSSH-Win64.zip
extrahieren ssh-keygen.exe
und verwenden – keine Installation erforderlich, keine Abhängigkeiten (von Cygwin oder anderen).
Wenn Sie Windows 10 Version 1803 oder neuer haben, ist OpenSSH bereits integriert. Für ältere Versionen können Sie es auch einfach alsOptionale Funktion „OpenSSH-Client“.
Siehe auchInstallieren Sie den OpenSSH SFTP-Client unter Windows 7.
Antwort4
Ich weiß, das ist ein Tumbleweed-Thread, aber ich habe die Lösung gefunden. Das Problem ist, dass versucht wird, die native Windows OpenSSH-Binärdatei zu verwenden, und die Verzeichnispfade kollidieren.
ICHder Windows OpenSSH-Client wurde entfernt, Cygwin mit den von Cygwin kompilierten OpenSSH-Binärdateien neu installiert und jetzt ssh-keygen
funktioniert es genau wie es sollte.
Es ist auch erwähnenswert, dass andere Dinge (wie rsync) wahrscheinlich aus demselben Grund fehlschlugen.