Soursetreeを使ってリモートリポジトリにSSH接続する（ボタン操作のみ・Windows用）

gitと言えばターミナルですが、どうにかしてボタン操作のみでSoursetreeをリモートリポジトリに接続したかった私の闘い(?)の記録をここに残します。
<font color="red">※Windows環境においての記事になります。<br>※とにかくリモートリポジトリにSSH接続したいので細かい説明端折ります。</font>

## 1) Soursetreeインストール
https://www.sourcetreeapp.com/

1. **`Download free` > `Download for Windows` をクリックしてファイルを保存**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3986891/daf2ffec-1862-59ce-4661-56340df7383a.png)

2. **チェックして`Download`**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3986891/3ed6adf9-2fe8-31a0-65de-9c286ac8a173.png)

3. **保存したexeファイルを実行**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3986891/ee166d51-826b-bf94-6f1b-e8ecd5dadc5c.png)

4. **`スキップ`**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3986891/a6ee3e6b-3afd-8e61-31ba-d4272c3b8ee5.png)

5. **Gitにチェックをして`次へ`**
※既にGitが入っている場合はチェックボックスがなくなっています
![image (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3986891/896650db-fd02-2638-c2e7-c8f8f34cb5aa.png)

6. **インストールが完了したら**
アカウント名とメールアドレスを入力して`次へ`
![image (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3986891/8f601df1-32ca-a497-b3c7-58f5135922bd.png)

7. **「SSHキーを読み込みますか？」というポップアップが出たら**
あれば`はい`、なければ`いいえ`
※今回は`いいえ`を選択したとして進めます。

## 2) Soursetreeにリポジトリを作成する
`Create`をクリックしてgitで管理したいファイルを`参照`し、リポジトリ名を入力　＞　`作成`
![image (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3986891/8a03467e-fd82-5d79-0cfd-1d25bf4863d8.png)

## 3) コミットします
1. **`全てインデックスに追加`**
![image 6png.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3986891/5887954c-999f-1170-c7a7-ff05bb1fafb6.png)

2. **`コミット`**
![image7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3986891/b6775996-d2b7-97ee-59bc-5721edf49208.png)

3. **完了**
![image 8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3986891/3b09687e-54c7-9aa0-9132-28a96337b174.png)

## 4) Githubアカウントにリポジトリを作成
1. **ログインして`Create repository`**
https://github.co.jp/
![スクリーンショット 2025-01-16 183159.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3986891/5d451c5e-7fcd-b4b3-0c6b-ac5a7db225e9.png)

2. **リポジトリ設定**
任意の入力をして`Create repository`
![image 9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3986891/634a48a1-31b7-b2a4-ec96-030800b3f33a.png)

3. **リポジトリ作成完了**
SSHのURLをローカルリポジトリと繋げるときに使います
![image 10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3986891/89502bb4-6f74-6d97-e129-6e6320a05da6.png)

## 5) Soursetreeの設定
1. **SSHキーを作る**
**`ツール`　＞　`SSHキーの作成/インポート`**
![image 11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3986891/9a3a02fd-d7b7-1c95-23e3-64d21868e096.png)

2. **`Generate`**
![スクリーンショット 2025-01-16 221802.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3986891/cc90a225-74bd-4ecb-facb-b5be5159d5a0.png)

3. **`Public key for pasting into OpenSSH authorized_keys file:`**
をメモ帳などにコピーしておく
![image 12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3986891/576b9739-99b5-5d8c-7981-dd0bde3ab977.png)

4. **`Save private key` ボタンを押して任意の場所にファイルを保存**
※作成したSSHキーを参照したい時に利用
![image 13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3986891/2ce8e686-a41b-b0ae-f397-8567e5405486.png)

5. **.sshフォルダ配下にprivate_keyとして保存しました**
![image 14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3986891/34817986-8a8e-c2e8-ddd9-03bfecbdb0f0.png)

6. **`Conversions` ＞ `Export OpenSSH key`　でOpenSSHキーを保存**
![image 15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3986891/a66db071-bc7e-3aad-d609-d50a0c3233c7.png)

7. **ファイル名は「id_rsa」**
![スクリーンショット 2025-01-16 222147.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3986891/07e80334-e1ac-a80b-d895-555c7518c160.png)

8. **リモートの設定**
    - **`リポジトリ`　＞　`リポジトリ設定`**
![スクリーンショット 2025-01-16 222327.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3986891/2a783a50-6417-646f-b178-44b1ef499e68.png)

    - **`追加`**
![スクリーンショット 2025-01-16 222356.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3986891/c3bed055-6107-185f-e79a-70fdcccdc9d2.png)

    - **リモート名　：　origin(慣例により)
URL/パス　：　4)-3で確認したGithub上のリポジトリのURL**
![image 16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3986891/0b00469e-4140-5313-a87d-a24b0d018c43.png)

    - **ブラウザでGithubにログイン等して接続完了**
![スクリーンショット 2025-01-16 222506.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3986891/4a46eba0-89c8-4e83-83b5-0da6b383d72b.png)

9. **SSHクライアント変更**
- **`ツール`　＞　`オプション`**
![スクリーンショット 2025-01-16 223552.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3986891/7e344f43-106a-1db9-56bb-8a8e17a75ba5.png)

- **SSHキー：5)-7で保存した「id_rsa」を選択**
**SSHクライアント：OpenSSH**
![スクリーンショット 2025-01-16 223636.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3986891/16688bc9-20f5-12cf-e1db-53f5cd0c46ec.png)

    <font color="red">※注意
    SSHクライアントをOpenSSHにするとツールの「`SSHキーの作成/インポート`」が「`SSHキーを追加`」に変わります。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3986891/c648872f-7954-46fd-1cab-86c1200fcea9.png)
    「`SSHキーの作成/インポート`」を使いたいときは
    `ツール`　＞　`オプション`　＞　`SSHクライアントの設定`　でSSHクライアントを　「`PuTTY/Plink`」に変更してください
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3986891/ee8995c3-9f38-0e77-7128-f2df0236c7ce.png)
    ↓
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3986891/d761eb18-82c5-8bc6-b95e-84d6faec05ea.png)
</font>

## 6) GitHubの設定
1. **アイコンクリック　＞　`setting`**
![スクリーンショット 2025-01-16 222537.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3986891/50191860-7eae-4ee9-3e8e-99079e54c005.png)

2. **`SSH and GPG keys`**
![スクリーンショット 2025-01-16 222607.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3986891/c76b9d77-5967-cb6c-64b3-3195476c2c51.png)

3. **`New SSH key`**
![スクリーンショット 2025-01-16 222632.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3986891/73e7631e-74ae-fd93-1450-0391aac2bd54.png)

4. **5)-3で保存したOpenSSHキーを貼り付け　＞　`Add SSH key`**
※titleは任意
![スクリーンショット 2025-01-16 222725.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3986891/ae1ccc96-88e5-9545-7c50-de1c57c478a6.png)

5. **完了**
![スクリーンショット 2025-01-16 222811.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3986891/eedfc7ce-49ba-96eb-2f64-0deeca4a4ccf.png)


## 6) プッシュなどができれば成功です！
![スクリーンショット 2025-01-20 112346.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3986891/5f00925f-9638-a2f7-9656-160a4173a6d7.png)

<br>
<br>
<br>

# 備考：なぜPuTTYキーではなくOpenSSHキーを使用したのかについて
何度かPuTTYキーで試しましたが、上手くいったことがなく、結局ターミナルでの修正が必要となったため、何が違うのだろうということでAIに聞いてみました。
## GitHubをOpenSSHとPuTTY Keyで接続する違いについて解説

GitHubにSSH接続する際、主に利用されるのは以下の2つです：
- **OpenSSH形式**
- **PuTTY Key（PuTTYgenで生成される`.ppk`形式）**

それぞれの違いやセキュリティ面、不都合について解説します。

## 1. OpenSSHとPuTTY Keyの違い

| 特徴                  | OpenSSH                                   | PuTTY Key (PuTTYgen)                     |
|-----------------------|------------------------------------------|-----------------------------------------|
| **鍵形式**            | OpenSSH形式 (`id_ed25519`など)           | PuTTY形式 (`.ppk`ファイル)              |
| **利用ツール**        | Unix系OS標準（Linux, macOS, Git Bash等）  | PuTTY (主にWindowsで使用)               |
| **互換性**            | OpenSSH対応ソフトウェア全般で使用可能      | PuTTY専用ツールでのみ使用可能            |
| **変換の必要性**      | GitHubと直接連携可能                     | `.ppk`をOpenSSH形式に変換が必要         |
| **手軽さ**            | 標準ツールで簡単                         | 変換や追加ツールが必要な場合がある       |


## 2. 注意点

両者は適切に設定すれば大きな差はありませんが、次の点を考慮してください。

### **OpenSSHの利点**
- **標準形式**: OpenSSH形式は多くのツールやプラットフォームでサポートされ、変換の手間が不要。
- **最新アルゴリズム対応**: `ed25519`や`ecdsa`など、効率的かつセキュアなアルゴリズムを利用可能。
- **広く検証されている**: OpenSSHは業界標準であり、セキュリティ面での信頼性が高い。

### **PuTTY Key (PuTTYgen) の注意点**
- **変換が必要**: `.ppk`形式はGitHubなどのプラットフォームで直接使用できないため、OpenSSH形式に変換する必要がある。
- **ツール依存**: PuTTY形式はPuTTY専用であり、他のツールでの互換性が低い。
- **セキュリティの同等性**: 鍵サイズやアルゴリズムの選択次第でOpenSSHと同等のセキュリティを実現可能。

## 3. 実務での不都合

### **OpenSSHの場合**
- 特に不都合は少なく、標準ツールで簡単に運用可能。
- GitHubやCI/CDなどでの設定もスムーズ。

### **PuTTY Keyの場合**
- **変換が必要**: GitHubやOpenSSH形式を期待するツールで利用するには、PuTTY形式（`.ppk`）をOpenSSH形式に変換する手間が発生します。

  ```bash
  puttygen keyfile.ppk -O private-openssh -o id_rsa
  ```
<br>
<br>

### **感想**
OpenSSHはGithubだと直接連携できるけど、PutyKeyだとOpenSSHに変換しないといけないのでSourcetreeの中で上手くいかない部分があるのかも...?　
PuTTYKeyを使っていてもAIに聞きながらターミナル（Git Bash）でどうにかすることもできますが、ボタン操作のみで何とかしたかったのでやってみました！
ありがとうございました！