Responder1
Acho que você provavelmente não está executando o Cygwin ssh-keygen
- o que which ssh-keygen
mostra? O não Cygwin ssh-keygen
no meu sistema (que foi instalado com PuTTY ou WinSCP, não me lembro qual) tem o mesmo comportamento, mas pode funcionar com:
ssh-keygen -t rsa -f /cygwin64/home/me/.ssh/id_rsa -N "passphrase"
Observação:
- Insira sua própria senha em vez de
passphrase
ou-N ""
uma senha vazia - O caminho tem um formato estranho e tem raiz em
C:
. Eu tenho o cygwin instalado emC:\cygwin64
, então as chaves estão no meu diretório inicial do Cygwin (~/.ssh
) neste exemplo. Faça.ssh
primeiro.
Ou você pode simplesmente instalar o Cygwin ssh-keygen
. which ssh-keygen
deveria então retornar /usr/bin/ssh-keygen
.
Responder2
Use barras para caminhos cygwin. A barra invertida é "o caractere de escape" no Linux (e, portanto, também no cygwin)
$ cygpath --ajuda
cygpath
ajuda a converter caminhos + nomes de arquivos para/de/para o cygwin.
Dica: Use caminhos Linux no cygwin, use caminhos Windows no Windows.
Exemplo não testado:
$ cygpath -u "C:\Users\User/.shhs/id_rsa" /cygdrive/c/UsersUser/.shhs/id_rsa
O que você digitou no seu exemplo (
C:\Users\User/.shhs/id_rsa
) é no final igual a C:UsersUser/.shhs/id_rsa
- o que provavelmente não é o que você deseja.
O "caractere de escape" retira o significado especial do caractere seguinte, normalmente um caractere especial, deixando o caractere literalmente, como está, na entrada (há mais do que isso, mas o suficiente aqui).
Exemplo:
$ echo \$PATH=$PATH $PATH=... $
Responder3
Considere usarVersão do OpenSSH da Microsoft. Apenasdownload OpenSSH-Win32.zip
ou OpenSSH-Win64.zip
, extraia ssh-keygen.exe
e use – sem necessidade de instalação, sem dependências (no Cygwin ou qualquer outra coisa).
Se você possui o Windows 10 versão 1803 ou mais recente, já possui o OpenSSH integrado. Para versões mais antigas, você também pode instalá-lo facilmente como umRecurso opcional "Cliente OpenSSH".
Veja tambémInstale o cliente OpenSSH SFTP no Windows 7.
Responder4
Tumbleweed thread, eu sei, mas encontrei a solução. O problema é que ele está tentando usar o binário openssh nativo do Windows e os caminhos dos diretórios colidem.
EUremoveu o cliente openssh do Windows, reinstalou o cygwin com os binários openssh compilados pelo cygwin e agora ssh-keygen
funciona exatamente como deveria.
Também vale a pena notar que outras coisas estavam falhando (como o rsync) pelo que provavelmente é o mesmo motivo.