Cygwin は ssh keygen を生成できません

Cygwin は ssh keygen を生成できません

Cygwin 経由で ssh-keygen を生成したいのですが、パスを入力すると問題が発生します (何も実行されません)。

ここでは Enter キーを押しただけで何も行われませんでした。

ここに画像の説明を入力してください

答え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"

注記:

  1. の代わりに独自のパスフレーズを入力するpassphraseか、-N ""空のパスフレーズの場合は を入力します。
  2. パスの形式がおかしく、ルートは ですC:。 に cygwin をインストールしたので、この例ではC:\cygwin64キーは Cygwin ホーム ディレクトリ ( ) に配置されます。まず を作成します。~/.ssh.ssh

または、 Cygwin をインストールすることもできますssh-keygenwhich ssh-keygenその後、 が返されるはずです/usr/bin/ssh-keygen

答え2

Cygwin パスにはスラッシュを使用します。バックスラッシュは Linux では「エスケープ文字」です (したがって Cygwin でも同じです)

$ cygpath --help

cygpathCygwin のパスとファイル名を変換するのに役立ちます。

ヒント: 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 クライアント」

参照Windows 7 に OpenSSH SFTP クライアントをインストールする

答え4

タンブルウィードのスレッドですが、解決策を見つけました。問題は、ネイティブの Windows openssh バイナリを使用しようとして、ディレクトリ パスが衝突することです。

Windows OpenSSHクライアントを削除しました、cygwin を cygwin でコンパイルされた openssh バイナリで再インストールしたところ、ssh-keygen正常に動作するようになりました。

また、おそらく同じ理由で、他のもの (rsync など) も失敗していたことにも注目に値します。

関連情報