質問: 環境 ・Windows7 ・Bitbucket - SourceTree ・Gitバージョン 2.14.1/LibGit2Sharp 0.24.0 + git-lfs v2.2.1 + Git LFS Bitbucket Adapter v1.0.6 --- ■git LFS をインストールしてバイナリファイルを含めて管理しようとしました。 --- ・参考にしたサイト git lfs version -> 確認できた。 git lfs track, git lfs ls-files -> 設定できた。 --- さて、プッシュしたところ、 ``` Pushing git -c diff.mnemonicprefix=false -c core.quotepath=false -c lfs.customtransfer.bitbucket-media-api.path=git-lfs-bitbucket-media-api push -v --tags origin master:master Pushing to https://bitbucket.org/ /tesk_k2 Git LFS: (0 of 4 files) 0 B / 8.77 MB batch response: Authorization error: https://bitbucket.org/ /tesk_k2.git/info/lfs/objects/batch Check that you have proper access to the repository error: failed to push some refs to 'https://bitbucket.org/ /tesk_k2' エラー終了しました。エラーの内容は上記をご覧ください。 ``` コミットはできたがプッシュは失敗とのこと。。。 ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/f90e50e99aab729bb6e980284dfc460f.png) --- ・Git LFS でサイズの大きいファイルの転送に失敗する場合 にあるMedia Adapterを入れてみましたが、エラーは相変わらず出ます。 --- **【アカウント】 アプリパスワード:なし SSH鍵:設定済み** **【リポジトリA】 Access Keys:なし Git LFS:No Git LFS files** 当該リポジトリAにはバイナリファイル(git lfs trackで登録した種類の画像ファイル)が4つ入っております。 実験として作ったリポBも同じ状況でした。ところが、フォルダからバイナリファイルを削除してみたところ、コミット+プッシュがエラーなくできました。 Git LFSをインストールしたものの、バイナリファイルの扱いがうまく行っていないということと推察します。 冒頭エラー3行目はリポ設定を反映していると思いますが、 ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/8e7b6252376322a4d6130f0f845a1c94.png) これがsshになればいいのか? しかしながら、 "Check that you have proper access to the repository" とのことですが、ツール→オプション→認証→編集→優先するプロトコルは[SSH]で「認証に成功」です。 --- originのURLを変更するで git remote set-url origin git@~ に変更しても、変化なしです。 --- 別の方向性を模索するため、Tutorialsもやってみましたが、「Cloning an existing Git LFS repository」のところで Enter passphrase for key '/c/Users/Owner/.ssh/id_rsa': と聞かれますが、リポAにAccess Keysを設定せよということなのでしょうか? リポごとにgit lfs trackの設定があるかもしてませんが、リポごとにAccess Keysも設定しなければならないのでしょうか?? --- 皆様のお知恵をいただけますと幸いです。
回答: 【解決法】 1PC 対 Bitbucket のSSH鍵と、 2SourceTree 対 Gitサーバー のSSH鍵 の2つの設定が必要。 PC 対 Bitbucket のSSH鍵 の設定 ■参考 SSH認証キーをGitLabに登録・設定手順 覚書 $ cd ~/.ssh // **秘密鍵1**の保存場所 $ ssh-keygen -t rsa -C mail@address.jp $ passphrase 設定 $ chmod 600 id_rsa Bitbucket[View Profile]→[設定]→[SSH鍵]に**公開鍵1**(label例:0927 - 18:05 - ssh-keygen - office)を登録。 ■参考 git パスワード を毎回聞かれる問題の解決方法 $ git remote -v $ git remote set-url origin git@bitbucket.org:~.git ■参考 “Permission denied (publickey).” が出たとき $ mv id_rsa bitbucket_ssh-keygen_rsa(命名例) $ mv id_rsa.pub bitbucket_ssh-keygen_rsa.pub(命名例) $ cd ~/.ssh/ $ vi config $ ssh -T git@bitbucket.org SourceTree 対 Gitサーバー のSSH鍵 の設定 ■参考 SourceTree 設定手順 覚書【Windows】 [ツール]→[SSHキーの作成]→[Generate] Key passphrase 設定 [Save public key]公開鍵2 id_rsa.pub(命名例) [Save private key]秘密鍵2 id_rsa.ppk(命名例) 保存場所は任意。 [メニュー]→[ツール]→[Launch SSH Agent]→[Add key]→**秘密鍵2**を登録。 Bitbucket[View Profile]→[設定]→[SSH鍵]に**公開鍵2**(label例:0927 - 18:25 - pageant - office)を登録。 SourceTreeおよびPageantを再起動。 Bitbucketアカウントに登録するSSH鍵は、計4つ。→エラー解消しました。 いづれか一方の登録だけでバイナリファイルを扱わず使用できていたが、GitLFSインストール後画像ファイルが紛れ込んだ途端、既述のようなエラーが出ていました。 【追記】 とにかくエラーが出なくなったことを記載しましたが、その後試行錯誤するに、整理できたことを追記します。本記事はLFS設定時に躓いた鍵設定の問題です。アカウントを2つ使用しようとしたことも混乱した要因でした。 githubではある1つのSSH鍵を複数アカウントに使うことはできない。→.ssh\config を調整することで使えるようになる。 結局pageantは使用しなくてもいいのではないか?パスフレーズの入力が省略されるというだけのことなら。さらにパスフレーズを設定しないケースもあるので。 ssh-agent OpenSSH FreeBSD(Unix OS) 版。OpenSSH でパスフレーズ入力の手間を省くための認証エージェント。ssh-agent を起動して秘密鍵を登録しておくと、それ以降のパスフレーズの入力は必要なくなる。 Pageant ssh-agentの Windows 版。パスフレーズ入力の自動化はもちろん、認証鍵の転送機能もサポート。ssh-agent とほぼ同等の機能。 PuTTY で SSH2 接続するとき、毎回パスフレーズを入力するのがめんどくさいという理由で pageant を常時起動。