ようこそここは俺のチラシの裏だ。

専門学校卒のぽんこつえんじにあが個人事業主になって書いているただの日記。

【Windows環境】GitHubに公開鍵を設定し、SourceTreeでSSH接続するメモ【SSH】

f:id:sugaryo1224:20191205181836j:plain

リンク

やること@GitHub参照ページ

参考ページ

プレースホルダ

本記事内ではこれらの情報をプレースホルダで置換してるので、よしなに読み替えてくだしあ。

  • {user-name}
  • {host-name}
  • {ssh-key-name}
  • {my-fingerprint}

SSH鍵生成

後から知ったけど id_xxx って名前にしといたほうが良かったらしい。 名前が id_xxx 形式になってないと ssh -i オプションで明示的に秘密鍵ファイルを指定する必要があるらしい。

ssh-keygen

このコマンドで、SSH接続のときに使用する 秘密鍵/公開鍵のペア を生成し、それぞれファイルに保存する。

C:\Users\{user-name}>ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\{user-name}/.ssh/id_rsa): {ssh-key-name}
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in {ssh-key-name}.
Your public key has been saved in {ssh-key-name}.pub.
The key fingerprint is:
SHA256:{my-fingerprint} {user-name}@{host-name}
The key's randomart image is:
+---[RSA 2048]----+
| .o+o            |
# 省略
|   .+. ..        |
+----[SHA256]-----+

GitHubSSH公開鍵を設定しにいく

概ね手順通りなので特に書く事ないけど、ざっくり以下の手順。

  • GitHubにログインする
  • ユーザアイコン(アカウントメニュー?)をクリックして Settings を選択。
  • Personal settings メニュー画面になるので SSH and GPG keys を選択。
  • New SSH Key を選択。
    • 鍵の名前を入力し、公開鍵情報をコピペ。
    • 公開鍵のコピペでは、前述の通り clip < {ssh-key-name}.pub でやった方が良いらしい。

SSH接続実験

取り敢えずGitHubチュートリアルに倣って試してみる。

ssh -T

C:\Users\{user-name}\.ssh>ssh -T git@github.com
The authenticity of host 'github.com (52.69.186.44)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)?   

y

怒られた。

Are you sure you want to continue connecting (yes/no)? y
Please type 'yes' or 'no': yes

yes/no で答えろって怒られた。

yes

改めて。

Warning: Permanently added 'github.com,52.69.186.44' (RSA) to the list of known hosts.
git@github.com: Permission denied (publickey).

よくわからんが、権限で弾かれた模様。

※ このときは理解してなかったけど、 そもそも -i オプションで正しい鍵を指定してない ので、それもNGだったっぽい。

いろいろ調べてリベンジ。

error @bash

{user-name}@{host-name}:/mnt/c/Users/{user-name}/.ssh$ ssh -i {ssh-key-name} -T git@github.com

こんなエラーが出た。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for '{ssh-key-name}' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "{ssh-key-name}": bad permissions
git@github.com: Permission denied (publickey).

Permissions 0777 for x are too open つってる。

なんか権限が 0777 だと権限開放しすぎらしい。

調べたところ 0600 にすれば動くらしいが、そもそも chmod が効かなかった。

謎。

ssh -i -T

C:\Users\{user-name}>cd .ssh

C:\Users\{user-name}\.ssh>ssh -i {ssh-key-name} -T git@github.com
Warning: Permanently added the RSA host key for IP address '13.114.40.48' to the list of known hosts.
Hi {user-name}! You've successfully authenticated, but GitHub does not provide shell access.

最終的にこれで接続は出来たっぽい。

ssh -i {ssh-key-name} -T git@github.com

sudo ssh @bash

良いのか悪いのかわからんけど須藤さんでssh叩いたら出来た。

{user-name}@{host-name}:/mnt/c/Users/{user-name}/.ssh$ sudo ssh -i {ssh-key-name} -T git@github.com
Hi sugaryo! You've successfully authenticated, but GitHub does not provide shell access.

取り敢えずSSH接続は成功した模様。

SourceTreeでのSSH設定

リモートリポジトリのURLをHTTPSからSSHに変更。

GitHubの任意のリポジトリに入って Clone or download から Clone with SSH Use a password protected SSH key. の方を選択。

git@github.com:account-id/repository.git 形式のアレになってる筈なので、これをコピー。

SourceTreeのリポジトリ設定を変更。

  • SourceTreeのメニュー右上 設定 から リポジトリ設定 を開く。
  • リモートリポジトリのパス ってのがある筈で、既存の接続設定を選択して 編集 をクリック。
  • URL/パスHTTPS接続のものになってる筈なので、SSH接続のものに書き換える。
    git@github.com:account-id/repository.git形式のアレね)

SourceTreeに秘密鍵を設定。

ここが案外困った。

  • メニューバー > ツール > オプション を開く。
  • 全般 の中に SSHクライアントの設定 って所があるので、ここを書き換える。
    • SSHキー: ローカルで ssh-keygen した時の 秘密鍵 のファイルを指定。
    • SSHクライアント: OpenSSH に変更。

これでプッシュするときちんとプッシュ出来た。 恐らくSSH接続できている事でしょう。(たぶん)

同じくメニューの所に ツール > SSHキーを追加 ってあるから、最初はてっきりここから設定するもんかと思ったけど、こっちじゃなかった。

逆に、最初から ssh-keygen とかのコマンドを使わずにやる場合は、SourceTreeに搭載されてるツールでSSHキーの生成・設定なんかが出来るっぽいけど触ってないから良くわかんね。