GitLabを導入して使い始めたのですが、クライアントとしてTortoiseGitを使うとパスワードの要求画面が表示されて困ってしまいました。
今回、パスワードを保存、省略する方法についてまとめてみました。
目次
GitLabの導入について
GitLabのサーバーへの導入方法については以下の記事に書きました。
GitLabのユーザー登録については以下の記事に書きました。
GitLabとWordPressとの共存については以下の記事に書きました。
その後、クライアントとしてTortoiseGitを使うと、
サーバーに接続するたびに以下のように
TortoiseGitPlinkからパスワードの要求画面が表示されてしまいます。
ちょっと困った。
GitLabにsshのキーを登録しているとパスワードは不要なはずなんですが。。
このまま、Cancelすると、以下のエラー画面が表示されます。
Cloning into ********
Access denied.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
gitは正常に終了しませんでした (終了コード 128)
調査してみた
まず、ssh -vTを使ってsshが正しく接続できるか確かめます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
$ ssh -vT git@aaa.bbb.ccc OpenSSH_6.6.1, OpenSSL 1.0.1i 6 Aug 2014 debug1: Connecting to aa.bb.cc [ww.xx.yy.zz] port 22. debug1: Connection established. debug1: identity file /c/Users/XXX/.ssh/id_rsa type 1 debug1: identity file /c/Users/XXX/.ssh/id_rsa-cert type -1 debug1: identity file /c/Users/XXX/.ssh/id_dsa type -1 debug1: identity file /c/Users/XXX/.ssh/id_dsa-cert type -1 debug1: identity file /c/Users/XXX/.ssh/id_ecdsa type -1 debug1: identity file /c/Users/XXX/.ssh/id_ecdsa-cert type -1 debug1: identity file /c/Users/XXX/.ssh/id_ed25519 type -1 debug1: identity file /c/Users/XXX/.ssh/id_ed25519-cert type -1 debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_6.6.1 debug1: Remote protocol version 2.0, remote software version OpenSSH_6.4 debug1: match: OpenSSH_6.4 pat OpenSSH* compat 0x04000000 debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: server->client aes128-ctr hmac-md5-etm@openssh.com none debug1: kex: client->server aes128-ctr hmac-md5-etm@openssh.com none debug1: sending SSH2_MSG_KEX_ECDH_INIT debug1: expecting SSH2_MSG_KEX_ECDH_REPLY debug1: Server host key: ECDSA 52:1a:bb:aa:a0:6c:46:ee:a2:9e:09:99:ff:00:00:10 debug1: Host 'aa.bb.cc' is known and matches the ECDSA host key. debug1: Found key in /c/Users/XXX/.ssh/known_hosts:1 debug1: ssh_ecdsa_verify: signature correct debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: Roaming not allowed by server debug1: SSH2_MSG_SERVICE_REQUEST sent debug1: SSH2_MSG_SERVICE_ACCEPT received debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mi c,password debug1: Next authentication method: publickey debug1: Offering RSA public key: /c/Users/XXX/.ssh/id_rsa debug1: Server accepts key: pkalg ssh-rsa blen 279 debug1: key_parse_private2: missing begin marker debug1: read PEM private key done: type RSA debug1: Authentication succeeded (publickey). Authenticated to aa.bb.cc ([ww.xx.yy.zz]:22). debug1: channel 0: new [client-session] debug1: Requesting no-more-sessions@openssh.com debug1: Entering interactive session. debug1: Remote: Forced command. debug1: Remote: Port forwarding disabled. debug1: Remote: X11 forwarding disabled. debug1: Remote: Agent forwarding disabled. debug1: Remote: Pty allocation disabled. debug1: Remote: Forced command. debug1: Remote: Port forwarding disabled. debug1: Remote: X11 forwarding disabled. debug1: Remote: Agent forwarding disabled. debug1: Remote: Pty allocation disabled. Welcome to GitLab, shoji.XXX! debug1: client_input_channel_req: channel 0 rtype exit-status reply 0 debug1: client_input_channel_req: channel 0 rtype eow@openssh.com reply 0 debug1: channel 0: free: client-session, nchannels 1 Transferred: sent 3332, received 3024 bytes, in 1.3 seconds Bytes per second: sent 2648.6, received 2403.8 debug1: Exit status 0 |
問題ないようです。
このまま、試しにコマンドラインから、以下のコマンドでgit cloneしてみると、なんとちゃんとclone出来ました。
1 |
$ git clone git@aa.bb.cc:root/(リポジトリ名) |
判明したことは以下のことです。
Git Bashのコマンドラインからはパスワード不要
TortoiseGitからは、TortoiseGitPlinkのパスワード要求画面が表示される(ただしGitLabではここでパスワードを入力する仕様ではないです)
TortoiseGitのsshクライアントを変更
パソコンを再起動しても事象は変わりません。
少なくともGit Bashで問題ないので、TortoiseGitに何らかの問題があるはずです。
キャッシュなのか、なんなのか原因が分からないのでTortoiseGitの設定を色々と見てみます。
すると。。。。。
おや?
これsshのクライアントとしてTortoiseGitPlinkを使っているじゃん。。。?
ちょっと変えてみよう。
という訳で、以下の通りsshクライアントを
TortoiseGitPlink.exeから
Git Bash付属のssh.exe
に変更しました。
C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe
↓
C:\Program Files (x86)\Git\bin\ssh.exe
これで試してみると、
ビンゴ!
パスワードの要求画面が表示されなくなりました。
最新のGitではsshの場所が変わりました
最新のGitではsshの場所が以下のように変わりました。
C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe
↓
C:\Program Files (x86)\Git\usr\bin\ssh.exe
結論、TortoiseGitのsshではなくて、Gitが持つsshを使うとよい
今回の事象の教訓。
ダイアログを誰が出しているか見定める。
今回はTortoiseGitPlink.exeが表示している。
いろいろと試すべし。
今回は、TortoiseGitPlink.exeからssh.exeに変更した。
Gitについてのおすすめの本
↓Gitについてのおすすめの本はコチラ
コメント