web-dev-qa-db-ja.com

ssh-agentを使用して認証されないopensshキーを持つTortoiseGit

私はWindowsでgit環境を設定していますXP(msysGit 1.7.11、TortoiseGit 1.7.14)と次のポイントを達成しようとしています:

  • デフォルトの22とは異なるポートでのssh接続
  • ssh-agentによって処理されるssh認証

だから私は〜/ .ssh/configファイルを作成します:

Host gitbox
   User gitolite
   Hostname XX.XX.XX.XX
   Port 154
   PreferredAuthentications publickey
   IdentityFile "/c/Documents and Settings/kraymer/.ssh/id_rsa"

Git bash CLIを使用すると、すべてが意図したとおりに機能します。

TortoiseGitと格闘しています。
最初にTortoiseGitをPlinkとともにインストールし、Pageantを使用してssh秘密鍵をロードしました。自動認証(Pageant)は機能しましたが、TortoiseGitはgitolite@gitbox/repo.gitとしてフォーマットされたgit repos urlを認識しないため、セットアップは失敗しました。

次に、opensshクライアントを使用してTortoiseGitをインストールし、configファイルをsshクライアントで読み取って、git CLIセットアップを模倣することにしました。
TortoiseGit設定でsshクライアントとしてmsys gitに同梱されているssh.exeを選択しました。
git pullを実行すると、リモートURLは解決されるようになりましたが、ssh-agentの自動認証が行われると予想される間にパスフレーズパスワードが要求されます。

https://dl.dropbox.com/u/1026715/tortoisegit.png

TortoiseGitをssh-agentで動作させることは可能ですか?
またはTortoiseGit(Plink)に。ssh/configを認識させますか?

編集#1

@VonCのアドバイスに従って、$ HOME変数を構成しました。
TortoiseGitで環境変数の表示をクリックすると、次のようになります。

 HOME=C:\Documents and Settings\kraymer  
 HOMEDRIVE=C: 
 HOMEPATH=\Documents and Settings\kraymer 

ただし、git pullでは、パスフレーズを入力する必要があります。

34
kraymer

微調整は必要ありません。

TortoiseGitがgit自体が使用するのと同じsshクライアントを指すようにします。スクリーンショットを参照してください。

enter image description here

これはC:\Program Files\Git\usr\bin\ssh.exeコメントでAleksey Kontsevichが言及した最新バージョンのGit。

82
Haitham Sweilem

最初にTortoiseGitをPlinkとともにインストールし、Pageantを使用してssh秘密鍵をロードしました。自動認証(Pageant)は機能しましたが、TortoiseGitはgitolite@gitbox/repo.gitとしてフォーマットされたgit repos urlを認識しないため、セットアップは失敗しました。

最終的に、sshエイリアスと同じ名前(つまり、質問のgitbox)でPuTTYセッションを作成する回避策を見つけました。
この方法で、CLIでgit clone gitbox/monrepoとして複製でき、Origin構文はTortoiseGitによって正しく処理されます。

4
kraymer

1)Cygwin

次の記事で説明されているアプローチを使用します。 https://help.github.com/articles/working-with-ssh-key-passphrases

パスワードは、cygwinセッションの起動時に一度だけ要求されます。 !!! cygwinセッションを終了する前に、ssh-agentプロセスを強制終了することを忘れないでください(プロセスPIDを見つけるにはpsを使用し、-9を強制終了します)。

Cygwinは何らかの理由でWindows環境で外部から開始されたプロセスを認識しないため、cygwinには個別のアプローチを使用しています。

2、3)MsysGit、TortoiseGit

便利なリンク: http://dogbiscuit.org/mdub/weblog/Tech/WindowsSshAgent

MsysGitをインストールします。 TortoiseGitをインストールします(インストール中にplinkではなくopensshを確認してください)。 !!!システム変数を確認してください。 GIT_SSH変数が存在する場合は削除します。

TortoiseGit->設定->全般に移動します

Git exeパスを/ binに設定します外部dllパスを/ mingw/binに設定します

TortoiseGit-> Settings-> Network Set SSH Client property to /bin/ssh.exeに移動します

システム変数SSH_AUTH_SOCKS = C:\ temp.ssh-socketを定義します

Cmd.exeを起動し、次のコマンドを実行します(MsysGitをインストールしたため、cmdで次のすべてのコマンドにアクセスできます-/ binがシステムPATH変数に追加されます)。

# following command is required to execute for avoiding Address already bind message when ssh-agen is not started yet but .ssh-socket exists after previous agent session
rm "%SSH_AUTH_SOCK%"

# Starting ssh-agent
ssh-agent -a "%SSH_AUTH_SOCK%"

# Adding our openssh key
ssh-add "%USERPROFILE%\.ssh\id_rsa"

# Type password for your key

それでおしまい。その瞬間から、パスフレーズを要求せずに、TortoiseGitおよびMsysGitからgit Push、git pullを実行できます。

Ssh-agentが不要になったら、Windowsタスクマネージャーを使用して強制終了できます。

4
ydrozhdzhal

上記の答えはどれも私にとってはうまくいきませんでした。

このバッチファイルを作成して問題を解決しました。

CALL "C:\Program Files\Git\cmd\start-ssh-agent.cmd"
SETX SSH_AUTH_SOCK "%SSH_AUTH_SOCK%"
SETX SSH_AGENT_PID "%SSH_AGENT_PID%"

これを1回実行し、パスフレーズを入力します。

その後、すべての操作でパスフレーズを入力する必要なく、opensshでtortoisegitを使用できます。

3
Michael Marcin

HOMEが定義されている環境でTortoiseGitを起動し、.sshの親ディレクトリを参照してください。
Windowsでは、HOMEがデフォルトで定義されていないため、これは重要です。

例として参照してください: " Windowsで認証が失敗するXP with git and tortoisegit
(他の可能性のあるソース: " RSA秘密鍵の検索場所をGit for Windowsに伝える方法 ")

2
VonC

ここでの説明は少し時代遅れなので、解決策を投稿することにしました。

Windows 10でGit BashとTortoiseGit 2.8.0を使用していますが、これらは現在一般的です。

前の投稿で説明したように、ssh.exeSettings->NetworkをSSHクライアントとして設定します。

前のコメントで説明したように、次のコマンドを使用してスクリプトを作成しました。システムが自動的に設定しない場合に備えて、HOME環境変数を設定することもできます。自宅がドライブH:\にあると仮定すると、次の行を追加できます。

SETX HOME /h
CALL "C:\Program Files\Git\cmd\start-ssh-agent.cmd"
SETX SSH_AUTH_SOCK "%SSH_AUTH_SOCK%"
SETX SSH_AGENT_PID "%SSH_AGENT_PID%"

を使用してスクリプトを追加しました Win logo+R Shell:startupを起動フォルダーに。または、スクリプトをレジストリに追加して、他のプロセスの前に実行されることを保証できます。

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run

必ずexitと入力してコンソールを閉じ、変数を将来のプロセス用に設定できるようにしてください。

2
Sergio Roa

これを解決するためのさまざまなオプションがあるようです。上記のどれも私には役に立たなかったので、私が何が助けになったかを共有したいと思いました。

スクリーンショット:ネットワーク設定/ Git SSHクライアント

Settings... -> Network -> SSH -> SSH clientで、クライアントをC:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exeに設定します。 Pageantを使用すると、期待どおりに自動的に認証されます。そうでない場合は、秘密鍵のパスフレーズの入力を求められます。 [プッシュ]ダイアログで[PuTTYキーの自動ロード]オプションがオンになっていることを確認します。

2
Lupinity Labs