GitLabへのSSH接続でハマった話

新年あけましておめでとうございます。
IaCまわりの記事を読み漁っていたところコードが書きたくなり、GitLabを開設してみたものの上手くSSH接続ができなかったので、解決方法をまとめます。

SSH接続するための設定手順は検索すればたくさん出てくるので詳細は割愛します。

目次

やったこと

  1. GitLabにアカウントとProjectを作成
  2. クライアント端末側(Windows10)にGitBashをインストール
  3. GitBashにてsshキーペアを作成し、GitLabのSSH Keysに公開鍵を登録
    GitLabにSSHで接続するまでの手順 - Qiita」の手順を参考にさせていただきました。

が、しかし上手く接続できない

事象

一通り設定し終えてgit cloneしたところ、以下のエラーが発生してクローンできない。

$ git clone git@gitlab.com:hoge/my-project.git
Cloning into 'my-project'...
The authenticity of host 'gitlab.com (35.231.145.151)' can't be established.
ECDSA key fingerprint is SHA256:HbW3g8zUjNSksFcqTiUWPWa2Bq1x9xdGMrluXFzSnUw.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'gitlab.com,35.231.145.151' (ECDSA) to the list of known hosts.
git@gitlab.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

SSHテストも同様にエラーが発生。
「Permission denied (publickey)」で接続できてないようです。

$ ssh -T git@gitlab.com
git@gitlab.com: Permission denied (publickey).

試したこと

configを見直す

~/.ssh/configの記述内容を見直しました。
特に問題なしでした。

Host gitlab     # sshで指定する任意の接続名
    HostName gitlab.com     # 接続先のホスト名またはIPアドレス
    IdentityFile ~/.ssh/rsa_gitlab     # 秘密鍵のパス
    User git     # 接続ユーザ(リモートURLアクセス時はgitで決め打ち)

GitLabのSSH Keysを見直す

作成した公開鍵がGitLab側で正しく登録されているか管理画面にて見直しました。
特に問題なしでした。

メールアドレスを指定してSSHキーペアを作り直す

Git - GitLabにssh接続しようとすると「Permission denied (publickey).」|teratail」を参考にアカウント開設時に登録したメールアドレスを指定してSSHキーペアを作り直し、GitLabに再登録してみました。

コマンドは以下の通り、"-C"オプションをつけてssh-keygenを実行します。
実施後も特に事象は解消されず、接続できないままでした。

$ ssh-keygen -t rsa -b 4096 -f ~/.ssh/rsa_gitlab -C "GitLabの登録メールアドレス(ex: hoge@gmail.com)"

ssh-agentに秘密鍵を登録する

私の場合はこれで接続成功しました。
【GitLab】SSH接続をテストする - Qiita」を参考にssh-agentを起動し、作成した秘密鍵を登録する方法です。

以下、手順を説明します。

  • ssh-agentの秘密鍵の登録状態を確認する
    • ssh-agentが起動してない状態だった
$ ssh-add -l
Could not open a connection to your authentication agent.
  • ssh-agentを起動する
$ eval `ssh-agent`
Agent pid 777
$ ssh-add -l
The agent has no identities.
$ ssh-add ~/.ssh/rsa_gitlab
Identity added: /c/Users/hoge/.ssh/rsa_gitlab (hoge@gmail.com)
  • SSH接続テストを実行する
    • 以下のように「Welcome to GitLab」と出れば、無事に接続成功です!
    • 私の場合はこれでgit cloneも成功するようになりました。
$ ssh -T git@gitlab
Welcome to GitLab, @hoge!

コメント

以前、別の端末でGitBashでSSH接続の設定を行った際はssh-agentの設定なんてした覚えがないのですが・・
何となくですがデフォルト名でキーペアを作らなかったせいなのでしょうか?
とにかく接続には成功したので、そこはあまり深堀りしないことにします。

以上。