LoginSignup
1
0

More than 1 year has passed since last update.

GitLabでSSH接続し、かつ、リポジトリごとにSSHの鍵を変える、そしてWSLのなかでやる

Posted at

プライベートでも開発をしたりしていると、会社とプライベートで GitHub などのアカウントを使い分けたくなります。ぼくは結構プライベートアカウントで仕事の開発もしてしまっていたんですが、あまりよくないので、重い腰を上げてユーザを切り変えることにしました。SSH でアクセスしているので SSH の鍵をリポジトリ事に替えることがゴールです。

実は GitHub でそれをやる記事は既にたくさんあって、 GitLab であってもやり方は GitHub と別に変わらない ですけれど、こういう記事はなんぼあってもいいですからね。

キーを作成して両方に配置

SSH のキーペアを作って、公開鍵を GitLab に登録します(キーの作り方とか形式がいろいろありますが、今回は pem で置きました)。

ローカルに秘密鍵をおく

秘密鍵はローカルに置きます。WSL を使っているひとは(ぼくですが)、Windows のユーザホームと WSL のユーザホームと違うところにあるので間違えないようにしましょう。ただコピーして置いただけだとパーミションがゆるゆるなので

Permissions 0644 for 'sample_key.pem' are too open.

みたいにおこられます。なので、

chmod 600 ~/.ssh/sample_key.pem

しておきましょう。

GitLab に公開鍵をおく

設定は、ユーザ設定のここです。

screencapture-gitlab-profile-keys-2023-04-14-10_45_21.png

上のキーの所に ssh-rsa とかではじまる公開鍵を登録します。「-----BEGIN PUBLIC KEY-----」みたいなヘッダ付きのフォーマット(このへんがよくわかってないが、ssh-rsa ではじまるのは OPENSSH の形式の一つ……で良いのかな……)は読んでくれません。読んでくれても良いのにね。

リポジトリごとの設定を作成

~/.ssh/config を編集します。

Host gitlab-main
    HostName gitlab.com
    User git
    IdentityFile ~/.ssh/key_main.pem
    TCPKeepAlive yes
    IdentitiesOnly yes
Host gitlab-sub
    HostName gitlab.com
    User git
    IdentityFile ~/.ssh/key_sub.pem
    TCPKeepAlive yes
    IdentitiesOnly yes

GitLab のリモートURLって(GitHubもそうですが)こういう形式していると思いますが、これ謎だったんですよね。

git@gitlab.com:[group-name]/[repository-name].git

git@gitlab.com ってなんだ? gitじゃなくて自分のユーザ名じゃ無くて良いのか、と思ってたんですが、git が便宜的にユーザ名になっているので普通に正しいみたいですね。ここはいまだにどういう理屈でこうなってるのかよくわかりません。

で gitlab.com のところは、ホスト名で、実際のホスト名というかホスト設定名がきます。なので上の設定だと

git@gitlab-sub:[group-name]/[repository-name].git

こうなるようです。すでにクローンしてしまってるリポジトリであれば、リモートリポジトリのURLを変更しましょう。

ユーザをリポジトリ事に設定

さいごに、このリポジトリアクセス時に使うユーザ名をリポジトリに設定します。これはこれで必要みたいですね。リポジトリのルートでやりましょう。

git config --local user.name [user-name]
git config --local user.email [user-mail-address]
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0