セキュリティの観点からGithubは使えないが、Gitは導入したいという企業にGitLabは支持されているのではないでしょうか。
Git自体があまり詳しく無い初心者にはGitLabでググってもドンピシャの答えが出てこないので、今後の為にメモっておこうと思います。
記事の対象像と事例
- Git初心者
- セットアップはやった事があるが、詳しい仕組みやエラー表示は理解していない
- SourceTreeというGitクライアントソフトウェアを利用している。
- GitLabを利用している。※Githubでも同じではないかとは思うのですが.....
- 突然、pullやcommitができなくなった。
以上の様な対象と、事例の方であれば同じ様に解決ができる可能性があるかもしれません。
突然pullできなくなった。
正直な話、突然では無いんですよね。PCが壊れてしまいデータと環境を丸ごと別のPCにいれたのですが、環境もそのままなので、問題ないかと思ったのですが、GitLabと接続できなくなってしまいました。
Please make sure you have the correct access rights
and the repository exists.
Completed with errors, see above
"あなたが正しいアクセス権を持っているかそのリポジトリが存在することを確認してください。"
と表示されるようになってしまいました。
ちなみに元々作成してた公開鍵は~/.ssh/id_rsaという名前で作成していました。
この公開鍵はGitLab以外にも使用していたので、なるべくもう一度id_rsaでGitLabとのssh接続が可能になるようにしたいと思いました。
SSHファイルの「パーミッションの問題!?
ディレクトリへのアクセス権限が無い事でエラーになっている場合があるようです。
前のPCからデータを丸ごと復元しましたが、ファイルパーミッションが変わることもあるかもしれないと試してみました。
//sshフォルダのid_rsaファイルのパーミッション
$ ls -l ~/.ssh | grep id_rsa
-rw------- 1 [UserName] staff 2622 6 17 2019 id_rsa
この様にid_rsaのパーミッションが所有者のみ書き出し、読み込み(600)になっていれば大丈夫です。
※パーミッションの詳しい内容は下記のページが参考になると思います。
初心者に分かるアクセス権(パーミッション)の基本
もしパーミッションが異なっていたらコマンドラインからの変更は、chmodで行う事ができますが、初心者には安心のGUIから行うことも可能です。
Macの場合ですが、対象フォルダ、対象ファイルを右クリックし、「情報を見る」をクリックします。
情報ウィンドウ共有とアクセス権と記載がある箇所で、対象のuser(大概自分の名前とかつけてる)のアクセス権を「読み/書き」にします。他のユーザーはアクセス不可にします。これで600に設定されます。
あきらめて別名で公開鍵・秘密鍵を作り直す
色々試してみたのですが結局、公開鍵・秘密鍵を作り直すというのが、簡単だし、早かったです。
公開鍵・秘密鍵は複数作成する事が可能ですので、使えない時は作り直すという決断もありだと思いました。
もう一度sshキー(秘密鍵・公開鍵)を作成するのですが、単純に[$ ssh-keygen]で作成してしまうと、id_rsa(デフォルトのファイル)を上書きしてしまいます。
※前回わからず上書きしてしまい面倒な事になりました
//sshキー(秘密鍵・公開鍵)を作成するディレクトリに移動
cd ~/.ssh
//sshキー(秘密鍵・公開鍵)の名前を指定して作成
ssh-keygen -f gitlab(作成したいファイル名)
パスワード入力を求められますので、入力して「The key's randomart image is:」などの文言が表示されたら新規に作成完了です。
sshファイルの中に今回作成したgitlab(新たに作成したファイル名).pubがあるのを確認したら、内容をGitLabのssh鍵に登録して完了です。
configファイルを修正する
デフォルトのファイル(id_rsa)と、新たに作成したファイル(gitlab)の2つになったので、configファイルを書き直す必要があります。
configファイルはsshキー(秘密鍵・公開鍵)を作成したディレクトリ.ssh/の中にあります。
# 初期で読み込むファイル
IdentityFile ~/.ssh/id_rsa
# GitLabで読み込むファイル
HostName gitlab.com
IdentityFile ~/.ssh/gitlab
port 22
user git
TCPKeepAlive yes
IdentitiesOnly yes
configファイルが認識されなかったら
configファイルが認識されなかったら下のコマンドを打ってください。ssh-agent(秘密鍵を一時的に保存してくれる)に鍵を渡してくれます。
$ ssh-add ~/.ssh/gitlab(←自分で設定した名前)
Macのキーチェーンストアに保存する場合は
$ ssh-add -K ~/.ssh/gitlab(←自分で設定した名前)
以上が、自分が試してみたことです。色々やってみましたが、新たに公開鍵・秘密鍵を作り直して、$ ssh-addすれば最短だったのではないかと思いました。