目次
クローン時のエラー
新規案件のGitリポジトリをcloneしようとすると、
yuki ~ % git clone hoge@hoge.git.backlog.jp:/PROJECT/project-nogizaka.git
Cloning into 'project-nogizaka'...
The authenticity of host 'hoge@hoge.git.backlog.jp (xx.xx.xxx.xxx)' can't be established.
ED25519 key fingerprint is SHA256:S+TESTHOGE12345678900.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
と表示されました。
Are you sure〜?と聞かれているので、「yes」を入力しEnterを押下すると、以下のエラーが発生しました。
Warning: Permanently added 'hoge@hoge.git.backlog.jp' (ED25519) to the list of known hosts.
hoge@hoge.git.backlog.jp: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
原因
BacklogにまだSSH公開鍵を登録していないことが原因です。
公開鍵の作成方法
yuki ~ % ls -la ~/.ssh
で確認すると、すでに複数登録済みでした。
-rw------- 1 yuki NOGIZAKA\Domain Users 1831 6 24 2025 key_sakura
-rw-r--r-- 1 yuki NOGIZAKA\Domain Users 402 6 24 2025 key_sakura.pub
-rw------- 1 yuki NOGIZAKA\Domain Users 1831 8 27 2025 key_hinata
-rw-r--r-- 1 yuki NOGIZAKA\Domain Users 402 8 27 2025 key_hinata.pub
いつも案件ごとに公開鍵を分けているので、今回も新しく作成することにしました。
まずは
yuki ~ % ssh-keygen -t ed25519 -C "yuki@test.co.jp" -f ~/.ssh/nogizaka_backlog
と入力します。
Generating public/private ed25519 key pair.
Enter passphrase (empty for no passphrase):
SSH鍵のパスフレーズを設定するかどうかを聞かれています。
パスフレーズとは
SSH秘密鍵を保護するための「パスワード」のようなものです。
- 設定する:秘密鍵を使うたびに(またはSSHエージェントに登録するまで)パスフレーズの入力が必要になり、セキュリティが高くなります。
- 設定しない:Enterキーを押すだけで使えます。
入力の手間はありませんが、秘密鍵ファイルが盗まれた場合に悪用されやすくなります。
今回は設定しないため、何も入力せず「Enter」をクリックします。
再度Enter〜と表示されるので、何も入力せず「Enter」をクリックします。
Enter same passphrase again:
結果がこちらです。
Your identification has been saved in /Users/yuki/.ssh/nogizaka_backlog
Your public key has been saved in /Users/yuki/.ssh/nogizaka_backlog.pub
The key fingerprint is:
SHA256:HOGETEST000000011111 yuki@test.co.jp
The key's randomart image is:
+--[ED25519 256]--+
| .S.. |
| . *=+ |
| @.+. |
| + % * =. |
| + *o.+ |
+----[SHA256]-----+
このキラキラしたものは何?
「ランダムアート」(randomart)と呼ばれるそうです。
鍵の内容を人が見て識別しやすいように図形化したものです。
鍵そのものは「ssh-ed25519 TESTHOHGE10232r442424...」のような長い文字列ですが、人間には見分けがつきません。
この長い文字列から、フィンガープリント(SHA256:...)とランダムアートを生成しています。
どちらも同じ鍵から一意に生成される識別情報です。
公開鍵の確認方法
作成できているか念のため確認します。
Your identification has been saved in /Users/yuki/.ssh/nogizaka_backlog
とあるので、/Users/yuki/.sshディレクトリ内に作られていることが分かります。
Finderを開き、まず /Users/yukiディレクトリ を開きます。
しかし、デフォルトでは.sshディレクトリは表示されません。
キーボードショートカット Command + Shift + .(ドット) をクリックすると、隠しファイルが表示されます。
▽ 作成されていることが確認できました
公開鍵の登録方法
次に、Backlogに登録する公開鍵をコピーします。
初めに作業していたターミナルに戻り、
yuki ~ % cat ~/.ssh/nogizaka_backlog.pub
と入力します。
登録したいのは公開鍵なので、末尾に「.pub」と書いているほうになります。
ssh-ed25519 AATESTHOGEHOGE3123456789000000....... yuki@test.co.jp
のような結果が表示され、これが公開鍵になります。
この1行をそのままコピーします。
コピーしたものをBacklogの公開鍵登録欄に貼り付けます。
「登録」ボタンをクリック。
「登録されたSSH公開鍵」の一覧に登録されたものが表示されます。
configファイルに設定を追加
.sshディレクトリ内のconfigファイルを開きます。
configファイルに設定を追加します。
# A案件Backlog
Host backlog-nogizaka
HostName hoge.git.backlog.jp
User hoge
IdentityFile ~/.ssh/nogizaka_backlog
IdentitiesOnly yes
- Host:ローカルで使う名前(なんでもいいですが、分かりやすい名前が良い)
- HostName:実際のBacklogサーバー
- User:Backlog指定のSSHユーザー
- IdentityFile:使用する秘密鍵
※公開鍵ではないので、nogizaka_backlog.pubではなくnogizaka_backlogになります - IdentitiesOnly yes:この鍵だけを使って認証する、という意味
HostNameとUserはクローンするURLから確認することができます。
hoge@hoge.git.backlog.jp:/PROJECT/project-nogizaka.git
の場合、
hoge.git.backlog.jpがHostName
hogeがUser
になります。
SSH接続テスト
configに追加したら、接続できるか確認します。
yuki ~ % ssh -T backlog-nogizaka
You've successfully authenticated, but Backlog does not provide shell access.
backlog-nogizakaはconfigファイルで記述したHost名(ローカルで使うときの名前)です。
You've successfully〜と出たら接続が成功していることになります。
再度クローンを実行
今回は~/.ssh/configファイルで設定したHost名「backlog-nogizaka」が必要になります。
git clone backlog-nogizaka:/PROJECT/project-nogizaka.git
# git clone Host名:/PROJECT/project-nogizaka.git
を実行するとクローンすることができます。
Host名を使うのがポイントです。
無事にクローンすることができました。
注意点
BacklogのSSHクローン時に使われるURLを使うと
git clone hoge@hoge.git.backlog.jp:/PROJECT/project-nogizaka.git
Cloning into 'project-nogizaka'...
hoge@hoge.git.backlog.jp: Permission denied (publickey).
fatal: Could not read from remote repository.
上記のようにエラーが発生します。





