私のGitセットアップはLinuxで正常に動作しますが、Windowsで(Git for Windowsおよび TortoiseGit を使用して)セットアップしようとすると、プライベートSSHキーをどこに置くかわかりません(または、それでも、それがどこにあるかをssh
に伝える方法)。 Git for Windowsのインストール中に標準のssh.exeオプションを使用しています。サーバーで(RSAの代わりに)パスワード認証を許可すると、セットアップは正常に実行されます。
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を使用する場合、 paceyの指示 でSSHキーを設定する必要があります。 TortoiseGitを使用しているすべてのリポジトリに対してこれを行う必要があります。
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チュートリアルを参照してください。これは基本的に、セットアップする必要がある配管と同じです。
TortoiseGitのキーの場所は次の方法で指定できます。
スクリーンショットは以下のとおりです。
以前の答えはどれも私にとってうまくいきませんでした。結局、これが私にとってうまくいきました。何をタイプすればよいかわかっていれば、実際にはかなり簡単です。 PuTTYは必要ありません。
それはあなた自身のコンピュータ上でやったことです。今度は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サイトを使用してキーをアップロードできます。そのため、「サーバーにコピーする」ために、次のようにします。
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
%HOME%=%HOMEPATH%を設定するだけです
これには、システムにログインしているすべてのユーザーに対して機能するという利点があります(それぞれが個別の.sshフォルダーを取得します)。
Vistaの場合:
私の場合、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
を使用する場合は、stdout
のkeyscan
からのパイプ出力(Windowsの場合)がエンコーディングをUCS-2に変更しますが、OpenSSHはUTF- 8!したがって、必ずknown_hosts
ファイルのエンコードを変更してください。
秘密鍵をワークステーションのSSHエージェントに追加する必要があります。これをどのように達成するかは、使用しているgitクライアントによって異なりますが、PuTTYとそれに関連するエージェント(ページェント)がうまくいく場合があります。公式のバイナリとソースへのリンクは次のとおりです。
http://www.chiark.greenend.org.uk/~sgtatham/PuTTY/download.html
ファイルの標準の場所は%USERPROFILE%\.ssh
です。
%USERPROFILE%
は、Unixの$ HOMEと同等です(通常、c:\users\youruserid
のようなものにマップされます)。
標準のコマンドラインUnixスタイルツールであるGitに付属のSSHツールを使用している場合は、 my script here のようなものを使用して、すべてのシェルでssh-agentを操作できます。
最も効率的な方法は、Pageantを使用することです。これは、すべてのプッシュではなく、セッションの最初に一度だけパスフレーズを書き込むことができるためです。ここでの回答はすべて短すぎたため、詳細なガイドをここに投稿します。
pageant.exe
、puttygen.exe
、PuTTY.exe
、plink.exe
をダウンロードします。それらをC:\puttyTools
ディレクトリに配置します。puttygen.exe
を実行します。%USERPROFILE%\_ssh
です(私のコンピューターでは、これはC:\Users\andres\.ssh\
にマップされます)。キーの名前は関係ありませんが、デモのためにgithub.ppk
と呼びます。このファイルの拡張子は.ppkです。Public key for pasting into OpenSSH authorized_keys file
というラベルが付いたテキストボックス)のテキストをコピーし、GitHubの設定で新しいSSHキーに貼り付けます。キーがどのマシンにあるかを説明するタイトルを付けます(例:「Work laptop」)。pageant.exe
を実行すると、新しいシステムトレイアイコンが表示されます。Edit environment variables for your account
を検出するWindowsMenuからアプリケーションEnviron
を検索して):GIT_SSH = "C:\puttyTools\plink.exe"
およびSVN_SSH = "C:\puttyTools\PuTTY\plink.exe"
MINGW64
Gitコンソールの新しいインスタンスを実行し、env | grep -i ssh
コマンドを記述して、環境変数が存在することを確認します。(もともと私が1つにまとめたこれら2つのガイドから抽出:Git for Windowsのセットアップ方法およびPuTTY Plink/Pageantを使用するようにMinGW-W64 + MSYSを構成します。)
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/*
私は同様の問題を抱えていましたが、ここでの回答のどれも問題を解決しませんでした。結局のところ、私の鍵のペアはもともと空のパスフレーズで生成されていました。 (私は知っている、ばかげています。)
新しい鍵ペアを作成し、公開鍵をGitHubにアップロードすると、物事は再び機能し始めました。
上記の問題を作成して修正しました
〜/ .ssh/config
ファイルして置く:
IdentityFile C:\Users\adria\.ssh\mysshkey
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が "正常に動作"します。
Windowsサービスアカウントからsshを実行する場合、次の回答もこの質問に適用されます。 Gen over SSHを使用したJenkins(Windowsサービス)
キーのパスとキーファイルの名前の両方を指定できます(Ubuntuの場合)。例えば:
ssh -i /home/joe/.ssh/eui_rsa
多くの答えはこれを言いますが、私にとっては十分に速くありません!
msys(標準のWindowsコンソール)を使用してWindowsでC:\Users\{you}\.ssh\id_rsa
基本的に、インストールされたキーをスキャンする手間が省けます(少なくとも私の新しいラップトップでは)ので、特にid_rsa
Ruby MSYS CLI for windows 10 64-bit)でいくつかのプライベートな作業リポジトリのクローンを作成したいという問題が発生しました
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
デクランの回答へのコメントを読んで、最初にコマンドプロンプトを開いてみて(開始→実行→cmd)、次にそのgit/binフォルダーに移動してssh-keygen
。理論的には、RSAキーが生成され、適切なディレクトリに配置されます。次に、それを見つけて公開鍵を世界と共有する必要があります。
ウィンドウが「点滅」するのは、Windowsがプログラムを実行し、実行すると、本当に出力が必要なときに、コマンドプロンプトが閉じられ、コマンドプロンプトが閉じられるためです。
Windows 7/8を使用している場合は、C:\ Users\Your_User_Name.sshを確認する必要があります。ここにid_rsaファイルをコピーして貼り付けるだけで、すぐに使用できます。
WindowsでSSHを使用するときに私が犯した1つの間違いは、Git Bashクライアントを介してキーを使用しようとすると、〜/ .ssh内のすべてのファイルが誤った権限でしたが、それが問題。
テストと同様に、〜/ .sshディレクトリのすべてをchmod 600に設定していることを確認してください。
PuTTYエージェント(ページェント)をロードして、サーバーのPuTTYで生成した秘密鍵を追加することもできます。
Gitはこれを認識し、それをプッシュ/プルに使用します。
Windowsマシンで必要な権限があり、ポリシーで許可されている場合は、特にLinuxの経験があることを考慮して、Cygwin( https://cygwin.com/ )をインストールすることをお勧めします。 Cygwinは、他のLinux/Unixマシンと同じようにssh-keyを処理できるようにします。また、LinuxのほぼすべてのCLIツールにアクセスできます。
必要に応じて、WindowsでTortoiseGitとGit Bashを使用していました。 TortoiseGitにすべてを追加しましたが、問題なく動作しましたが、キーが正しいディレクトリにあるにもかかわらず、Git Bashはそれを取得しませんでした。私はGit Bashからこれをしなければならなかったことがわかりました:
ssh-add C:\\Users\\<YOUR_USER>\\.ssh\\id_rsa
もちろん、キーが置かれている場所にパスを変更できます。区切り文字として\\
を使用することを忘れないでください。
私のWindows 7システムでは、Git Guiはuserprofile/.ssh
フォルダー、より具体的にはc:/users/yourusername/.ssh/
でRSAキーを探します。
私のセットアップのトリッキーな部分は、hostmonsterの共有ホストがキーを受け入れるようにすることでした。私がそれを機能させる唯一の方法は、Git Guiを使用して(パスワードなしで)鍵のペアを作成し、コントロールパネルのsshを介して公開鍵をコピーして貼り付け、鍵を管理することでした。
最初から開始するには、メニューHelp、SSH 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を使用してうまくプッシュできました。それは、共有ホスティングだけでうまくいきました。私がこれを思い付くのに何時間もの試行錯誤を要したので、これが誰かを助けることを願っています-そしてそれはとても簡単です!
私のmsysgit OpenSSL/Bash Gitエクスペリエンス(PuTTYのplinkではありません)は、.ssh/
フォルダは以下の通りです。
%HOME%/.ssh/
%HOMEDRIVE%%HOMEPATH%/.ssh/
%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%/.ssh
はC:/Users/Username/.ssh
およびローカルにキーを持っています。設定%HOME%
〜%USERPROFILE%
は、リモートホームドライブの検索を停止します。
WindowsでGit Guiのv0.17を使用して、次のメニューコマンドをクリックしました:Help→Show SSH Key。
YourSSH公開鍵というタイトルのダイアログが表示されました。キーを生成してクリップボードにコピーしました。その後、私は githelp のsetup-sshの指示に従ってステップ3以降を続行しました。その後、Git GuiはGitHubと静かに通信しました-資格情報を入力する必要はありません。
Windows 10を使用すると、実行時にページェントで生成されたSSHキーを機能させることができませんでした(少なくともコマンドラインのGitの場合、SourceTreeを使用して問題はありませんでした)。
git Push Origin master
だから私の解決策:
ラン
ssh-keygen
確認された鍵が存在する
ls ~/.ssh
Notepad ++でid_rsa.pubを開き、すべてのコンテンツを選択しました
Bitbucketに新しいキーを追加しました https://bitbucket.org/account/user/myusername/ssh-keys/
ラベルを付けてコンテンツをキーフィールドに貼り付けた->キーを追加
その後、コマンドラインGitが機能しました。古いPEM形式が必要なようです。このキーをページェントにインポートしようとすると、同じことが言えます。
TortoiseGitでは、リポジトリのクローンを作成するときに使用するキーを指定できます。 「Load PuTTY Key」をチェックして、.ppk
ファイル、スクリーンショットのように:
WindowsでGitコマンドラインを使用している場合は、次のように実行できます。
cmd.exe
を開き、setx HOME c:\PATH_TO_PRIVATE_KEY
を実行します。
.ssh
内に新しいフォルダーc:\PATH_TO_PRIVATE_KEY
(存在しない場合)を作成し、id_rsa
ファイル(秘密鍵)をその中にコピーします。
できました。これで、Gitコマンドラインを通常どおり使用できます。