web-dev-qa-db-ja.com

Git for Windowsに秘密のRSAキーの場所を教えてください。

私のGitセットアップはLinuxで正常に動作しますが、Windowsで(Git for Windowsおよび TortoiseGit を使用して)セットアップしようとすると、プライベートSSHキーをどこに置くかわかりません(または、それでも、それがどこにあるかをsshに伝える方法)。 Git for Windowsのインストール中に標準のssh.exeオプションを使用しています。サーバーで(RSAの代わりに)パスワード認証を許可すると、セットアップは正常に実行されます。

503
binaryorganic

Git Bashの場合

Msysgitを実行していて(私はそうだと思います)、Git Bash(TortoiseGitよりもお勧めしますが、今ではGUIよりもCLIに頼っています)を実行しようとしている場合は、Gitのホームディレクトリを特定する必要があります起動してbashを実行し、次にpwdと入力します(Windows 7では、_C:\Users\phsr_のようになります)。 Git Bashにいる間は、_mkdir .ssh_にする必要があります。

ホームディレクトリとその下の_.ssh_フォルダーを作成したら、PuTTYgenを開いて、以前に作成したキー(.ppkファイル)を開きます。キーが開いたら、_Conversions -> Export OpenSSH key_を選択して_HOME\.ssh\id_rsa_に保存します。その場所にキーがあると、Git Bashがそのキーを認識して使用します。

注:コメントは、これがすべての場合に機能するとは限らないことを示しています。 OpenSSHキーを_Program Files\Git\.ssh\id_rsa_(またはProgram Files (x86)\Git\.ssh\id_rsa)にコピーする必要がある場合があります。

TortoiseGitの場合

TortoiseGitを使用する場合、 paceyの指示 でSSHキーを設定する必要があります。 TortoiseGitを使用しているすべてのリポジトリに対してこれを行う必要があります。

493
Dan McClain

Git for Windowsに付属の組み込みSSHクライアントを使用して、Git SSHクライアントがキーを見つけられるように、HOME環境変数を設定する必要があります。

たとえば、Windows Vistaのインストールでは、コマンドラインでsetx HOME c:\Users\admin\を発行してこれを実行します。

それは私の日を作り、あなたの秘密鍵がパスワードで保護されていなければ、Gitの問題を修正しました。 ssh-agentを使用する場合は、ssh-agent cmd.exe(これまで行ったことはありませんが)と通常どおりssh-addを実行できます。

ウィンドウをblinkしないようにするために、すべてのGit/SSHツールはcmd.exeから実行されることに注意してください。

これが正しく機能しない場合、plinkの使用はおそらくGIT_SSHを微調整することで実現できます。すべてのSVN + sshチュートリアルを参照してください。これは基本的に、セットアップする必要がある配管と同じです。

108
Oct

TortoiseGitのキーの場所は次の方法で指定できます。

  • エクスプローラウィンドウを開きます。
  • コンテキストメニューを開き、ナビゲートTortoiseGitSettings
  • 現在開いているウィンドウで、GitRemoteに移動します
  • 対応する入力ボックスでPuTTYキーへのパスを設定します。

スクリーンショットは以下のとおりです。

Enter image description here

57
pacey

以前の答えはどれも私にとってうまくいきませんでした。結局、これが私にとってうまくいきました。何をタイプすればよいかわかっていれば、実際にはかなり簡単です。 PuTTYは必要ありません。

  • Git Bashプロンプトを開く
  • 「ssh-keygen」と入力します
    • デフォルトの場所を受け入れる
    • 空白のパスフレーズを選択してください(すべての質問でEnterキーを押してください)
  • 次に、公開鍵をサーバーにコピーします。例:scp〜/ .ssh/id_rsa.pub [email protected]:〜

それはあなた自身のコンピュータ上でやったことです。今度はsshを宛先サーバーに入れ、次に

mkdir -p ~/.ssh
cd ~/.ssh
cat ../id_rsa.pub >> authorized_keys
rm ../id_rsa.pub

それでおしまい!完了です! Git Bashから、次の手順でテストします。

ssh [email protected] ls

Gitサーバーのホームディレクトリにファイルがリストされていれば、完了です。

GitHubの場合、サーバーへのシェルアクセスはありませんが、彼らのWebサイトを使用してキーをアップロードできます。そのため、「サーバーにコピーする」ために、次のようにします。

  • Git Bashで「cat〜/ .ssh/id_rsa.pub」と入力し、結果を選択して、クリップボードにコピーします。
  • GitHub Webサイトで、[アカウント設定]、[SSHおよびGPGキー]に移動し、[新しいSSHキー]をクリックして、キーを貼り付けます。
51
Hugh Perkins

OpenSSHツールでmsysgitを使用している場合は、~/.ssh/id_rsaを作成するか、~/.ssh/configにキーを指すGit構成を作成する必要があります。

これは、正しいユーザー名とデフォルトのキー以外のキーを使用するBitbucketのGit構成の例です(SSH接続用に1つのキーを維持し、Gitアカウント用にもう1つのキーを維持する場合)。

〜/ .ssh/config

Host bitbucket.org
    Hostname bitbucket.org
    User git
    IdentityFile /C/keys/yourkey.key

Git Bashに入ったら、2つのコマンドを実行して、現在のセッションのssh-agentにキーを追加し、キーのパスワードを繰り返し入力する手間を省くことができます。

eval `ssh-agent`
ssh-add /C/keys/yourkey.key
42
GregB

%HOME%=%HOMEPATH%を設定するだけです

これには、システムにログインしているすべてのユーザーに対して機能するという利点があります(それぞれが個別の.sshフォルダーを取得します)。

Vistaの場合:

  1. コンピューターを右クリック
  2. プロパティを選択
  3. 詳細システム設定をクリックします
  4. 環境変数をクリックします
  5. 下部のセクション(システム変数)で、[新規]をクリックします。
  6. 変数名タイプの場合:HOME
  7. 可変パスタイプの場合:%HOMEPATH%
  8. OKをクリックします
16
Jono

私の場合、DockerコンテナwindowsservercoreでGit for Windowsを使用していました。

私のGitは Chocolatey によってC:\Program Files\Gitにインストールされました。

ファイルC:\Program Files\Git\etc\ssh\ssh_configを次のように更新する必要がありました。

Host example.com
   Identityfile ~/.ssh/id_rsa

その後、C:\Users\<user>\.ssh\id_rsaのキーを使用できました

OpenSSH for Windowsと共にGit for windowsを使用している場合。 Gitはまだ独自のsshを使用しています。

さらに、OpenSSHからssh-keyscan Host.com > known_hostsを使用する場合は、stdoutkeyscanからのパイプ出力(Windowsの場合)がエンコーディングをUCS-2に変更しますが、OpenSSHはUTF- 8!したがって、必ずknown_hostsファイルのエンコードを変更してください。

9
oglop

秘密鍵をワークステーションのSSHエージェントに追加する必要があります。これをどのように達成するかは、使用しているgitクライアントによって異なりますが、PuTTYとそれに関連するエージェント(ページェント)がうまくいく場合があります。公式のバイナリとソースへのリンクは次のとおりです。

http://www.chiark.greenend.org.uk/~sgtatham/PuTTY/download.html

7
Declan Shanaghy

ファイルの標準の場所は%USERPROFILE%\.sshです。

%USERPROFILE%は、Unixの$ HOMEと同等です(通常、c:\users\youruseridのようなものにマップされます)。

標準のコマンドラインUnixスタイルツールであるGitに付属のSSHツールを使用している場合は、 my script here のようなものを使用して、すべてのシェルでssh-agentを操作できます。

4
Eric Blade

最も効率的な方法は、Pageantを使用することです。これは、すべてのプッシュではなく、セッションの最初に一度だけパスフレーズを書き込むことができるためです。ここでの回答はすべて短すぎたため、詳細なガイドをここに投稿します。

  1. PuTTYのWebサイトからpageant.exeputtygen.exePuTTY.exeplink.exeをダウンロードします。それらをC:\puttyToolsディレクトリに配置します。
  2. puttygen.exeを実行します。
  3. ボタンをクリック Generate
  4. プログラムの指示に従って、進行状況バーがいっぱいになるまでウィンドウの上部でマウスを動かします。
  5. パスフレーズを入力し、後続のテキストボックスにそれを繰り返します。
  6. 「秘密鍵を保存」をクリックします。これらを保存する通常のディレクトリは%USERPROFILE%\_sshです(私のコンピューターでは、これはC:\Users\andres\.ssh\にマップされます)。キーの名前は関係ありませんが、デモのためにgithub.ppkと呼びます。このファイルの拡張子は.ppkです。
  7. PuTTYgenの上部のテキストボックス(Public key for pasting into OpenSSH authorized_keys fileというラベルが付いたテキストボックス)のテキストをコピーし、GitHubの設定で新しいSSHキーに貼り付けます。キーがどのマシンにあるかを説明するタイトルを付けます(例:「Work laptop」)。
  8. pageant.exeを実行すると、新しいシステムトレイアイコンが表示されます。
  9. アイコンを右クリックして、[キーを追加]をクリックします。
  10. Ppkファイルを見つけ、パスフレーズを入力します。
  11. これらの新しいユーザー環境変数を作成します(Edit environment variables for your accountを検出するWindowsMenuからアプリケーションEnvironを検索して):GIT_SSH = "C:\puttyTools\plink.exe"およびSVN_SSH = "C:\puttyTools\PuTTY\plink.exe"
  12. PuTTY.exeを開き、Gitリポジトリをホストしているホストに接続してみます。たとえば、SSH経由でgithub.comに接続しようとすると、サーバーのフィンガープリントを受け入れるかどうかを尋ねるダイアログが表示されます。[はい]をクリックします。
  13. MINGW64 Gitコンソールの新しいインスタンスを実行し、env | grep -i sshコマンドを記述して、環境変数が存在することを確認します。
  14. これで準備は完了です。ホストからGit + SSHプロトコルでクローンを作成してみます。

(もともと私が1つにまとめたこれら2つのガイドから抽出:Git for Windowsのセットアップ方法およびPuTTY Plink/Pageantを使用するようにMinGW-W64 + MSYSを構成します。)

4
knocte

OK、.の提案を見ました。

しかし、プライベートSSHキーをパブリックフォルダーに配置することは良い考えではないので、knownhostの場所を探し始めました。

したがって、SSHキーを正しく保護する場合は、キーを次のディレクトリに配置する必要があります。

Windows 7、8、および8.1 32ビットの場合:

C:\ Users \\ AppData\Local\VirtualStore\Program Files\Git \

Windows 7、8、および8.1 64ビットの場合:

C:\ Users \\ AppData\Local\VirtualStore\Program Files(x86)\ Git \

GitHub for WindowsとGit GUI for Windowsを混在させると、Git GUIがユーザー名とパスワードの入力を求め続けるという問題が発生する場合があります。これを解決するには、リモートURLをhttps:(WindowsのGitHubが作成するもの)からGitプロトコルに変更します。構成ファイルの.gitディレクトリで、次を見つけます。

[remote "Origin"]
   url = https://github.com/**username**/**reponame**.git
   fetch = +refs/heads/*:refs/remotes/Origin/*

それを次のように変更します。

[remote "Origin"]
    url = [email protected]:**username**/**reponame**.git
    fetch = +refs/heads/*:refs/remotes/Origin/*
3
IDisposable

私は同様の問題を抱えていましたが、ここでの回答のどれも問題を解決しませんでした。結局のところ、私の鍵のペアはもともと空のパスフレーズで生成されていました。 (私は知っている、ばかげています。)

新しい鍵ペアを作成し、公開鍵をGitHubにアップロードすると、物事は再び機能し始めました。

2
Eric Cloninger

上記の問題を作成して修正しました

〜/ .ssh/config

ファイルして置く:

IdentityFile C:\Users\adria\.ssh\mysshkey
2
Adrian Onu

Pageant( PuTTYバンドル で提供されるSSHエージェント)が問題を解決します。

スタートメニューの[スタートアップ]フォルダー(_C:\Users\owen.blacker\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup_)に"C:\Program Files (x86)\PuTTY\pageant.exe" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerPersonal.ppk" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerWork.ppk"を指すショートカットがあるので、起動時にSSHキーが読み込まれ、Gitが "正常に動作"します。

1
Owen Blacker

Windowsサービスアカウントからsshを実行する場合、次の回答もこの質問に適用されます。 Gen over SSHを使用したJenkins(Windowsサービス)

1
Alexander Pacha

キーのパスとキーファイルの名前の両方を指定できます(Ubuntuの場合)。例えば:

ssh -i /home/joe/.ssh/eui_rsa
1
jim

多くの答えはこれを言いますが、私にとっては十分に速くありません!

msys(標準のWindowsコンソール)を使用してWindowsでC:\Users\{you}\.ssh\id_rsa

基本的に、インストールされたキーをスキャンする手間が省けます(少なくとも私の新しいラップトップでは)ので、特にid_rsa

Ruby MSYS CLI for windows 10 64-bit)でいくつかのプライベートな作業リポジトリのクローンを作成したいという問題が発生しました

1
MrMesees

Git for Windowsを使用している場合、SSHキーが生成されたら、SSHキーをssh-agentに追加する必要があります。

新しいSSHキーの生成とssh-agentへの追加を参照してください。

eval $(ssh-agent -s)

// Tell where the keys are located

ssh-add ~/.ssh/id_rsa
0
Matoeil

デクランの回答へのコメントを読んで、最初にコマンドプロンプトを開いてみて(開始→実行cmd)、次にそのgit/binフォルダーに移動してssh-keygen。理論的には、RSAキーが生成され、適切なディレクトリに配置されます。次に、それを見つけて公開鍵を世界と共有する必要があります。

ウィンドウが「点滅」するのは、Windowsがプログラムを実行し、実行すると、本当に出力が必要なときに、コマンドプロンプトが閉じられ、コマンドプロンプトが閉じられるためです。

0
naydichev

Windows 7/8を使用している場合は、C:\ Users\Your_User_Name.sshを確認する必要があります。ここにid_rsaファイルをコピーして貼り付けるだけで、すぐに使用できます。

0
eeree

WindowsでSSHを使用するときに私が犯した1つの間違いは、Git Bashクライアントを介してキーを使用しようとすると、〜/ .ssh内のすべてのファイルが誤った権限でしたが、それが問題。

テストと同様に、〜/ .sshディレクトリのすべてをchmod 600に設定していることを確認してください。

0
Spedge

PuTTYエージェント(ページェント)をロードして、サーバーのPuTTYで生成した秘密鍵を追加することもできます。

Gitはこれを認識し、それをプッシュ/プルに使用します。

0
deepakkt

Windowsマシンで必要な権限があり、ポリシーで許可されている場合は、特にLinuxの経験があることを考慮して、Cygwin( https://cygwin.com/ )をインストールすることをお勧めします。 Cygwinは、他のLinux/Unixマシンと同じようにssh-keyを処理できるようにします。また、LinuxのほぼすべてのCLIツールにアクセスできます。

0
torbenl

必要に応じて、WindowsでTortoiseGitとGit Bashを使用していました。 TortoiseGitにすべてを追加しましたが、問題なく動作しましたが、キーが正しいディレクトリにあるにもかかわらず、Git Bashはそれを取得しませんでした。私はGit Bashからこれをしなければならなかったことがわかりました:

ssh-add C:\\Users\\<YOUR_USER>\\.ssh\\id_rsa

もちろん、キーが置かれている場所にパスを変更できます。区切り文字として\\を使用することを忘れないでください。

0

私のWindows 7システムでは、Git Guiはuserprofile/.sshフォルダー、より具体的にはc:/users/yourusername/.ssh/でRSAキーを探します。

私のセットアップのトリッキーな部分は、hostmonsterの共有ホストがキーを受け入れるようにすることでした。私がそれを機能させる唯一の方法は、Git Guiを使用して(パスワードなしで)鍵のペアを作成し、コントロールパネルのsshを介して公開鍵をコピーして貼り付け、鍵を管理することでした。

最初から開始するには、メニューHelpSSH keyを表示、次にGenerate Keyの順に移動して、Git Guiでキーを作成する必要があります。これで、.sshディレクトリに2つの新しいキーが作成されます。 .pubファイルを開き、内容をコピーします。

共有ホストのコントロールパネルにログインし、[〜#〜] ssh [〜#〜]Manage SSH keys、およびImport keyに移動します。Publicボックスに貼り付け、拡張子を付けずに正しい名前を付けてください-私はid_rsaでした。ここで、認証の管理リンクを使用してキーを認証する必要があるため、authorized_keysファイルに連結されます。

これで、Git GuiとGit Bashは、パスワードを入力しなくてもSSHを使用してプッシュできるようになります。奇妙なことに、Linuxを実行している自分のサーバーでは、Git BashとGit Guiを介してSSHを使用してうまくプッシュできました。それは、共有ホスティングだけでうまくいきました。私がこれを思い付くのに何時間もの試行錯誤を要したので、これが誰かを助けることを願っています-そしてそれはとても簡単です!

0
user228414

私のmsysgit OpenSSL/Bash Gitエクスペリエンス(PuTTYのplinkではありません)は、.ssh/フォルダは以下の通りです。

  1. %HOME%/.ssh/
  2. %HOMEDRIVE%%HOMEPATH%/.ssh/
  3. %USERPROFILE%/.ssh/

それで、他のどれかがあなたが期待したものではないのに、なぜ多くの人がHOMEの設定を勧めるのか。さらに重要なのは、自分で確認できることです。デバッグするにはssh -vは、次のように公開鍵認証を使用するサーバーに送信します。

$ ssh -v [email protected]
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
debug1: Reading configuration data /d/.ssh/config
...
debug1: identity file /d/.ssh/identity type -1
debug1: identity file /d/.ssh/id_rsa type 1
debug1: identity file /d/.ssh/id_dsa type -1
...
debug1: Next authentication method: publickey
debug1: Trying private key: /d/.ssh/identity
debug1: Offering public key: /d/.ssh/id_rsa
..
Hi kcd83! You've successfully authenticated, but GitHub does not provide Shell access.

あいまいなドライブでsshを検索していることがわかりました。以前の回答のいずれも、見たものを説明しているようには見えませんでした。

時々 %HOMEDRIVE%%HOMEPATH%はマップされたネットワークドライブです(例:H:/)ネットワーク/ファイルサーバーの問題がある場合、%USERPROFILE%/.sshC:/Users/Username/.sshおよびローカルにキーを持っています。設定%HOME%%USERPROFILE%は、リモートホームドライブの検索を停止します。

0
KCD

WindowsでGit Guiのv0.17を使用して、次のメニューコマンドをクリックしました:HelpShow SSH Key

YourSSH公開鍵というタイトルのダイアログが表示されました。キーを生成してクリップボードにコピーしました。その後、私は githelp のsetup-sshの指示に従ってステップ3以降を続行しました。その後、Git GuiはGitHubと静かに通信しました-資格情報を入力する必要はありません。

0
snow6oy

Windows 10を使用すると、実行時にページェントで生成されたSSHキーを機能させることができませんでした(少なくともコマンドラインのGitの場合、SourceTreeを使用して問題はありませんでした)。

git Push Origin master

だから私の解決策:

  1. 「Git Bash」をオープンしました
  2. ラン

    ssh-keygen
    
  3. 確認された鍵が存在する

    ls ~/.ssh
    
  4. Notepad ++でid_rsa.pubを開き、すべてのコンテンツを選択しました

  5. Bitbucketに新しいキーを追加しました https://bitbucket.org/account/user/myusername/ssh-keys/

  6. ラベルを付けてコンテンツをキーフィールドに貼り付けた->キーを追加

その後、コマンドラインGitが機能しました。古いPEM形式が必要なようです。このキーをページェントにインポートしようとすると、同じことが言えます。

0
HostMyBus

TortoiseGitでは、リポジトリのクローンを作成するときに使用するキーを指定できます。 「Load PuTTY Key」をチェックして、.ppkファイル、スクリーンショットのように: https://i.stack.imgur.com/lAyzT.png

0
NGNeer

WindowsでGitコマンドラインを使用している場合は、次のように実行できます。

cmd.exeを開き、setx HOME c:\PATH_TO_PRIVATE_KEYを実行します。

.ssh内に新しいフォルダーc:\PATH_TO_PRIVATE_KEY(存在しない場合)を作成し、id_rsaファイル(秘密鍵)をその中にコピーします。

できました。これで、Gitコマンドラインを通常どおり使用できます。

0
duccom