私はWindowsでgit環境を設定していますXP(msysGit 1.7.11、TortoiseGit 1.7.14)と次のポイントを達成しようとしています:
だから私は〜/ .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の自動認証が行われると予想される間にパスフレーズパスワードが要求されます。
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
では、パスフレーズを入力する必要があります。
最初にTortoiseGitをPlinkとともにインストールし、Pageantを使用してssh秘密鍵をロードしました。自動認証(Pageant)は機能しましたが、TortoiseGitはgitolite@gitbox/repo.gitとしてフォーマットされたgit repos urlを認識しないため、セットアップは失敗しました。
最終的に、sshエイリアスと同じ名前(つまり、質問のgitbox)でPuTTYセッションを作成する回避策を見つけました。
この方法で、CLIでgit clone gitbox/monrepo
として複製でき、Origin
構文はTortoiseGitによって正しく処理されます。
次の記事で説明されているアプローチを使用します。 https://help.github.com/articles/working-with-ssh-key-passphrases
パスワードは、cygwinセッションの起動時に一度だけ要求されます。 !!! cygwinセッションを終了する前に、ssh-agentプロセスを強制終了することを忘れないでください(プロセスPIDを見つけるにはpsを使用し、-9を強制終了します)。
Cygwinは何らかの理由でWindows環境で外部から開始されたプロセスを認識しないため、cygwinには個別のアプローチを使用しています。
便利なリンク: 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タスクマネージャーを使用して強制終了できます。
上記の答えはどれも私にとってはうまくいきませんでした。
このバッチファイルを作成して問題を解決しました。
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を使用できます。
HOME
が定義されている環境でTortoiseGitを起動し、.ssh
の親ディレクトリを参照してください。
Windowsでは、HOMEがデフォルトで定義されていないため、これは重要です。
例として参照してください: " Windowsで認証が失敗するXP with git and tortoisegit 。
(他の可能性のあるソース: " RSA秘密鍵の検索場所をGit for Windowsに伝える方法 ")
ここでの説明は少し時代遅れなので、解決策を投稿することにしました。
Windows 10でGit BashとTortoiseGit 2.8.0を使用していますが、これらは現在一般的です。
前の投稿で説明したように、ssh.exe
でSettings->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
と入力してコンソールを閉じ、変数を将来のプロセス用に設定できるようにしてください。
これを解決するためのさまざまなオプションがあるようです。上記のどれも私には役に立たなかったので、私が何が助けになったかを共有したいと思いました。
スクリーンショット:ネットワーク設定/ Git SSHクライアント
Settings... -> Network -> SSH -> SSH client
で、クライアントをC:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe
に設定します。 Pageantを使用すると、期待どおりに自動的に認証されます。そうでない場合は、秘密鍵のパスフレーズの入力を求められます。 [プッシュ]ダイアログで[PuTTYキーの自動ロード]オプションがオンになっていることを確認します。