答案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 主目录 ( )。首先进行 Make。~/.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
- 这很可能不是您想要的。
“转义字符”会从其后的字符(通常是特殊字符)中取出特殊含义,而将字符保留在输入中的原样(它的含义不止于此,但这里已经足够了)。
例子:
$ echo \$PATH=$PATH $PATH=... $
答案3
考虑使用Microsoft 构建的 OpenSSH。 只是下载 OpenSSH-Win32.zip
或者OpenSSH-Win64.zip
,提取ssh-keygen.exe
并使用 – 无需安装,无依赖性(Cygwin 或其他任何东西)。
如果您使用的是 Windows 10 版本 1803 或更高版本,则您已经内置了 OpenSSH。对于较旧的版本,您也可以轻松地将其安装为可选功能 “OpenSSH 客户端”。
答案4
Tumbleweed 线程,我知道,但我找到了解决方案。问题是它试图使用本机 Windows openssh 二进制文件,目录路径发生冲突。
我删除了 Windows openssh 客户端,使用 cygwin 编译的 openssh 二进制文件重新安装了 cygwin,现在它ssh-keygen
可以正常工作。
还值得注意的是,其他东西(如 rsync)也可能由于同样的原因而失败。