バージョン管理システムとして使っているリポジトリを、SubversionからGitに変更しました。
それに伴い、クライアントをTortoiseSVNからTortoiseGitに変えて使ってみました。
TortoiseGitについては以下にまとめました。
TorgoiseGitでは、TortoiseSVNと異なり、リポジトリーに接続する都度、パスワード入力を求められます。
さすがに毎回、パスワードを入力するのは面倒なので、今回、パスワードの入力をスキップする方法を調べてみました。
目次
TortoiseGitでパスワード入力をなくすのは難しい
SubversionのクライアントであるTortoiseSVNの場合、パスワードをスキップするには設定画面を開きます。
Network ⇒ SSH Clientで
C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe -pw xxxxx
のように、pwオプションでパスワードを引数にすることによりパスワード入力をなくすことが出来ます。
Gitでも同じことが出来るだろうと思い、TortoiseGit で、設定画面を開きます。
Network ⇒ SSH Clientで
C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe -pw xxxxx
のように、pwオプションを付けて実行してみると、以下のようにエラーが表示されます。
1 2 3 4 5 6 |
git.exe pull -v --no-rebase --progress "origin" error: cannot spawn C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe -pw xxxxx: No such file or directory fatal: unable to fork git did not exit cleanly (exit code 1) (1279 ms @ 2015/01/26 20:08:22) |
SSHのクライアントとして以下を試してみても結果は同じでした。
C:\Program Files\TortoiseGit\bin\TortoisePlink.exe
(TortoiseGit付属で、互換性保持のためのインストールされる古いsshクライアント)
C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe
(TortoiseSVN付属のsshクライアント)
_netrcやWindows Crendential Store for Gitを使ってもパスワードを求められる
いろいろと調べてみたところ、以下の方法で、パスワードの入力を回避できるらしいので試してみました。
_netrc
%USERPROFILE%\ディレクトリー(Windows 7,8 だと ”C:\Users\ユーザー名”)
に、_netrc というファイルを置いて、以下のように記述します。
1 2 3 |
machine ホスト名 login ログイン名 password パスワード |
これでパスワードを聞かれないはずって思いきや、やはりパスワード入力を求められます。。
Windows Crendential Store for Git
から
git-credential-winstore.exe
というインストーラーをダウンロードしてインストールします。
この後、以下のコマンドを実行します。
1 |
$ git-credential-winstore -i C:\Program Files (x86)\Git\bin\Git.exe |
これでパスワードが保存されるはずって思いきや、やはりパスワード入力を求められます。。
何か設定が間違っているんでしょうか?
困った。。
どうしようもなくなって来ました。
最後、秘密鍵と公開鍵を設定する方法を使うとパスワードをスキップすることが出来ました。
秘密鍵と公開鍵の設定でTortoiseGitでパスワードをスキップ可能
秘密鍵と公開鍵の生成
Windowsの「スタートメニュー」から「TortoiseGit」を開き、「PuTTYgen」を起動します。
「Generate」を押してからマウスを左右に動かします。
マウスを左右に動かすことにより、キーが生成されます。
秘密鍵を保存するために、「Save private key」を押すと以下のダイアログが表示されます。
「はい(Y)」を押します。
C:\Users\(ユーザー名)\private.ppk
というファイルを「保存(S)」します。
次に公開鍵を保存するために、「Save public key」を押します。
C:\Users\(ユーザー名)\public.key
というファイルを「保存(S)」します。
TortoiseGitで秘密鍵の設定
エクスプローラーを起動して「Git Clone…」を押します。
「Load Putty Key」のところで、先ほど作成した「private.ppk」を設定して「OK」を押します。
sshで利用する認証鍵の生成とサーバーへの転送
Windowsの「スタートメニュー」から「Git」を開き、「Git Bash」を起動します。
Git Bashでカレントディレクトリが、
C:\Users\(ユーザー名)
であることを確認します。
1 2 |
$ pwd /c/Users/(ユーザー名) |
sshで利用する認証鍵を生成します。
1 |
$ ssh-keygen -i -f public.key > authorized_keys |
生成した認証鍵をサーバーに転送します。
サーバーのユーザーホーム
/home/(ユーザー名)/.ssh
というディレクトリが存在しない場合は、作成しておきます。
1 2 3 4 5 6 7 8 |
$ scp authorized_keys (サーバーのユーザー名)@aa.bb.cc.dd:~/.ssh The authenticity of host ‘aa.bb.cc.dd (aa.bb.cc.dd)’ can’t be established. ECDSA key fingerprint is yy:yy:yy:yy:yy:yy:yy:xx:xx:xx:xx:xx:xx:xx:xx:xx. Are you sure you want to continue connecting (yes/no)? (yesを入力します) Warning: Permanently added ‘aa.bb.cc.dd’ (ECDSA) to the list of known hosts (サーバーのユーザー名)@aa.bb.cc.dd’s password: (パスワードを入力します) |
どうやら、この方法でTortoiseGitで毎回パスワードを聞かれて入力することを省略できるので、おすすめらしいです。
現在は、GitLabを使って運用していますが、本質的にやることは同じようです。
まとめ
TortoiseGitで毎回、リポジトリのパスワード入力が求められるのは仕様なのかどうなのかわかりません。
さすがに毎回聞かれるのは不便だと思うんですけどね。
今回、ご紹介した方法では、当然ながら、別のパソコンからは使えません。
もっと手軽に便利な方法があってしかるべきだと思うんだけど、調べ方がまずいのかな。
Gitについてのおすすめの本
↓Gitについてのおすすめの本はコチラ
コメント