答案1
我想你可能沒有運行 Cygwin ssh-keygen
-which ssh-keygen
顯示了什麼?我的系統上的非 Cygwin ssh-keygen
(與 PuTTY 或 WinSCP 一起安裝,我不記得是哪一個)具有相同的行為,但可以使用:
ssh-keygen -t rsa -f /cygwin64/home/me/.ssh/id_rsa -N "passphrase"
筆記:
- 插入您自己的密碼短語而不是
passphrase
, 或-N ""
作為空密碼短語 - 該路徑的格式很奇怪,並且根位於
C:
.我已將 cygwin 安裝在,因此在此範例中C:\cygwin64
金鑰位於我的 Cygwin 主目錄 ( ) 中。~/.ssh
先做.ssh
。
或者您可以只安裝 Cygwin ssh-keygen
。which ssh-keygen
然後應該返回/usr/bin/ssh-keygen
。
答案2
對 cygwin 路徑使用正斜杠,反斜杠是 linux 中的“轉義字符”(因此也在 cygwin 中)
$ cygpath --幫助
cygpath
幫助將路徑+檔案名稱轉換為/從/到 cygwin。
提示:在cygwin中使用Linux路徑,在windows中使用Windows路徑。
未經測試的範例:
$ cygpath -u "C:\Users\User/.shhs/id_rsa" /cygdrive/c/UsersUser/.shhs/id_rsa
您在範例 (
C:\Users\User/.shhs/id_rsa
) 中輸入的內容最終等於C:UsersUser/.shhs/id_rsa
- 這很可能不是您想要的。
「轉義字元」從其後面的字元(通常是特殊字元)中獲取特殊含義,將字元按字面意思保留在輸入中(還有更多內容,但這裡已經足夠了)。
例子:
$回顯\$PATH=$PATH $路徑=... $
答案3
考慮使用Microsoft 建構的 OpenSSH。只是下載 OpenSSH-Win32.zip
或者OpenSSH-Win64.zip
,解壓縮ssh-keygen.exe
並使用 – 無需安裝,沒有依賴項(在 Cygwin 或其他任何東西上)。
如果您使用的是 Windows 10 版本 1803 或更高版本,則您已經內建了 OpenSSH。對於舊版本,您還可以輕鬆地將其安裝為選用功能 “OpenSSH 用戶端”。
答案4
風滾草線程,我知道,但我找到了解決方案。問題在於它嘗試使用本機 Windows openssh 二進位檔案並且目錄路徑發生衝突。
我刪除了 Windows openssh 用戶端,使用 cygwin 編譯的 openssh 二進位檔案重新安裝了 cygwin,現在它的ssh-keygen
工作方式與應有的完全一樣。
另外值得注意的是,其他事情也失敗了(例如 rsync),原因可能相同。