решение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 --help
cygpath
помогает преобразовать пути+имена файлов для/из/в cygwin.
Подсказка: используйте пути Linux в cygwin, а пути 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
- что, скорее всего, не то, что вам нужно.
«Символ Escape» лишает специального значения следующий за ним символ, обычно специальный символ, оставляя символ буквально таким, какой он есть, во вводе (это еще не все, но этого достаточно).
Пример:
$ echo \$ПУТЬ=$ПУТЬ $ПУТЬ=... $
решение3
Рассмотрите возможность использованияСборка OpenSSH от Microsoft. Толькоскачать OpenSSH-Win32.zip
или OpenSSH-Win64.zip
, извлеките ssh-keygen.exe
и используйте — установка не требуется, нет зависимостей (от Cygwin или чего-либо еще).
Если у вас Windows 10 версии 1803 или новее, у вас уже есть встроенный OpenSSH. Для более старых версий вы также можете легко установить его какДополнительная функция «Клиент OpenSSH».
Смотрите такжеУстановка клиента OpenSSH SFTP на Windows 7.
решение4
Тред Tumbleweed, я знаю, но я нашел решение. Проблема в том, что он пытается использовать собственный двоичный файл Windows openssh, и пути к каталогам конфликтуют.
яудалил клиент Windows openssh, переустановил cygwin с помощью скомпилированных cygwin двоичных файлов openssh, и теперь он ssh-keygen
работает именно так, как и должен.
Также стоит отметить, что другие вещи не работали (например, rsync), что, вероятно, было связано с той же причиной.