Backlog GitにおけるSSH接続のための設定 [Macintosh編]

GitのSSH接続と言えば`RSA`公開鍵をよく使っていますが、Backlogの公式ブログで「[Backlog リリース: Git SSH 接続でより安全で高いパフォーマンスを持つ鍵と鍵交換アルゴリズムを追加し、古いものを一部廃止します。](https://backlog.com/ja/blog/backlog-update-2018-10-11/)」という記事を見つけて、`Ed25519`という方式が使えるとのことで、設定してみた。

次の流れで設定していきます。**設定環境はMacintoshです。**

[ローカルマシンでの鍵作成](#ローカルマシンでの鍵作成) > [Backlogに公開鍵を設定](#backlogに公開鍵を設定) > [~/.ssh/configの編集](#sshconfigの編集) > [SSH接続確認](#ssh接続確認)

また、Backlogのサブドメインはご自身のものに読み替えてください（記事中の`yamaroo`部分は自分のサブドメインです）。

# ローカルマシンで鍵の作成

まずはローカルマシンで鍵を作成します ([参考](https://backlog.com/ja/git-tutorial/reference/ssh.html#sec3>https://backlog.com/ja/git-tutorial/reference/ssh.html#sec3))。
自分は鍵ファイルの用途が後でわかるように、そして既存の鍵ファイルと重複しないように鍵ファイル名を指定しています。また、パスフレーズは空白のままいきました。

なお、記事中にあるように、全ユーザー一気に適用される訳ではないようですので、最後まで設定してみて上手くいかない場合(`Access denied`) は `ed25519`ではなく `ecdsa` で設定してみると良さそうです。

```
$ cd ~/.ssh/
$ ssh-keygen -t ed25519 -C yamaroo.backlog.com -f yamaroo.backlog.com
$ # -t 暗号化タイプ
$ # -C コメント
$ # -f 鍵ファイル名

Generating public/private ed25519 key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in yamaroo.backlog.com.
Your public key has been saved in yamaroo.backlog.com.pub.
The key fingerprint is:
SHA256:yqsY4t20XfJUimsR9f+TcaobCkXQHbNIdWMAPkC21q4 yamaroo.backlog.com
The key's randomart image is:
+--[ED25519 256]--+
|       .=.o+=o+  |
|       . O...= . |
|        + B .    |
|       o o o     |
|        S o..    |
|     . o.oo  . ..|
|. .  .ooE+  . ..+|
|...oo oo*. . ..+ |
| ....+oo .. oo  .|
+----[SHA256]-----+
```

`-t`で指定できるタイプはこの辺[[1](https://man.openbsd.org/ssh-keygen.1), [2](ed25519)]で確認しました。

# Backlogに公開鍵を設定

先ほど作成された公開鍵`yamaroo.backlog.com.pub` の中身をBacklogの [個人設定] - [SSH公開鍵] から登録します([参考](https://backlog.com/ja/git-tutorial/reference/ssh.html#sec4))。

Macなので`pbcopy`コマンドでクリップボードにコピーできますので、活用します。

```
$ pbcopy < ~/.ssh/yamaroo.backlog.com.pub
```


# ~/.ssh/configの編集

`~/.ssh/config`を編集します ([参考](https://backlog.com/ja/git-tutorial/reference/trouble-shooting.html))。既存ファイルがなければ次のように作成しましょう。

```
$ touch ~/.ssh/config
$ chmod 600 ~/.ssh/config
```

追加すべき設定内容は次の通りです。

```
Host yamaroo.git.backlog.com
  User yamaroo
  HostName yamaroo.git.backlog.com
  IdentityFile ~/.ssh/yamaroo.backlog.com
```

# SSH接続確認

次のようにSSHコマンドを入力して接続確認を行います。

```
$ ssh -T yamaroo@yamaroo.git.backlog.com
```

成功すると、こんなメッセージが出ます。

```
The authenticity of host 'yamaroo.git.backlog.com (54.250.148.49)' can't be established.
RSA key fingerprint is SHA256:w1Lng4UpfjBOloZubOkoIusr/eYXc6lBfxcaLlogfI0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'yamaroo.git.backlog.com,54.250.148.49' (RSA) to the list of known hosts.
```
```
Hi ! You've successfully authenticated, but Backlog does not provide shell access.
```

# （おまけ）git add もしくは git cloneを用いてURLを設定する

SSH設定ができたら、Backlogのリモートリポジトリをローカルとリンクさせると思いますので、そのコマンドまでのせておきます。

### 既存のローカルリポジトリをbacklog Gitに紐つけたい場合

```
$ git remote add origin yamaroo@yamaroo.git.backlog.com:/Project/program.git
$ # URL部分はbacklog GitのリポジトリのSSH URL
```

### backlog Gitをダウンロードする場合

```
$ git clone yamaroo@yamaroo.git.backlog.com:/Project/program.git
$ # URL部分はbacklog GitのリポジトリのSSH URL
```

# その他参考にした情報
- [https://help.github.com/en/articles/connecting-to-github-with-ssh](https://help.github.com/en/articles/connecting-to-github-with-ssh)