答え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 のパスとファイル名を変換するのに役立ちます。
ヒント: 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
使用を検討するOpenSSH の Microsoft ビルド。 ただダウンロード OpenSSH-Win32.zip
またはOpenSSH-Win64.zip
、 を抽出してssh-keygen.exe
使用します。インストールは不要で、依存関係もありません (Cygwin など)。
Windows 10バージョン1803以降をお使いの場合は、すでにOpenSSHが組み込まれています。古いバージョンの場合は、オプション機能 「OpenSSH クライアント」。
答え4
タンブルウィードのスレッドですが、解決策を見つけました。問題は、ネイティブの Windows openssh バイナリを使用しようとして、ディレクトリ パスが衝突することです。
私Windows OpenSSHクライアントを削除しました、cygwin を cygwin でコンパイルされた openssh バイナリで再インストールしたところ、ssh-keygen
正常に動作するようになりました。
また、おそらく同じ理由で、他のもの (rsync など) も失敗していたことにも注目に値します。