Skip to content
Daisuke Kashiwagi edited this page Dec 28, 2023 · 16 revisions

書籍「わかばちゃんと学ぶGit使い方入門」 のサポートページです。

ここでは主にSSH設定方法を解説します。

SSHの設定方法

大まかな流れは次のとおりです。

  1. 公開鍵と秘密鍵を作る。
  2. 秘密鍵を自分のパソコンに登録する。
  3. 公開鍵はGitHubへ登録する。
  4. SSH接続できることを確認する。

*SSH・・・Secure Shell(セキュアシェル)の略。離れた場所にあるコンピュータと通信するための方法のひとつ。SSHを使うと、すべての通信が暗号化され、第三者に簡単には解読できないようになる。

魔王教授: WindowsとMacで操作方法が異なるぞ。

Windows版

Windows版の解説は準備中です。申し訳ありませんが、GitHub公式の記事をご確認ください。

https://docs.github.com/ja/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent

Mac版

魔王教授: Mac版は、コマンド操作で進めていくぞ。

わかばちゃん: え〜!? クリック操作じゃできないの!?

魔王教授: 短い英単語を書いてあるとおりに打ち込むだけだから、一緒に頑張ろう!

※コマンド操作について、詳しくは「ふろく:コマンド操作に挑戦!」で解説しています。

公開鍵・秘密鍵を作ろう

最初に、コマンド操作をするための画面を立ち上げましょう。

SourceTreeを開きます。

image

画面右上の「端末」をクリックします。

次のような画面が開きます。以降、この画面をターミナルと呼びます。 背景は白いこともあります。

image

それでは、公開鍵と秘密鍵を作りましょう。この2つの鍵は、同時に作ります。 次のコマンドを入力しましょう。最後にエンターキーを押して実行します。

$ ssh-keygen -t ed25519 -C ""

image

※「ed25519」というのは、署名方式暗号方式のひとつです。2023年現在、GitHubで推奨されている方法です。

エルマスさん: 頭の「$」マークは、実際には入力しなくていいわよ。「これはコマンドラインですよ」という意味で表記しているだけなの。

「パスフレーズを入力してください(Enter passphrase)」と言われますが、何も打ち込まずエンターを押していきます。 ※今回は入門なのでパスフレーズは指定しませんが、業務で使う場合は設定しましょう。

Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/soudaminato/.ssh/id_ed25519): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/wakabachan/.ssh/id_ed25519.
Your public key has been saved in /Users/wakabachan/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:A2Ni24vQqBjMnESnQhzi/G1AK8nWeLdwq4qAg/KZaYo [email protected]
The key's randomart image is:
+--[ED25519 256]--+
|o+.o             |
|B.B .            |
|.@ *oo+          |
|B =+*=oo         |
|.=+o=o. S        |
|+o .o. . .       |
|O  .. .          |
|=oo+             |
|E+=              |
+----[SHA256]-----+

このように記号で作られた不思議な絵が表示されれば、鍵の作成は成功です。

これで

  •  秘密鍵 ~/.ssh/id_ed25519
  •  公開鍵 ~/.ssh/id_ed25519.pub

が作成されました。

わかばちゃん:「pub」がついているほうが、公開鍵ね(publicの略)。

魔王教授:そうだ。この公開鍵をGitHubに登録し、秘密鍵は自分のパソコンの中だけに持っておくんだ。

鍵ができたか確認しよう

鍵がちゃんと作成されたか確認します。

ホームディレクトリの「.ssh」というフォルダの中に入っているファイル一覧を表示する

$ ls ~/.ssh
 id_ed25519      id_ed25519.pub

素晴らしい! 秘密鍵(id_ed25519)と公開鍵(id_ed25519.pub)が、「.ssh」というフォルダ内に存在していることがわかります。

秘密鍵をパソコンに登録しよう

さて、無事に鍵ができましたが、実は鍵を作っただけでは通信できません。 「SSHで通信するときには、この秘密鍵を使ってね」とパソコンに教えてあげる必要があります。

次のコマンドで、秘密鍵のありかを教えてあげましょう。

$ ssh-add ~/.ssh/id_ed25519

公開鍵をクリップボードにコピーする

まず、次のコマンドで公開鍵をコピーします。

$ pbcopy < ~/.ssh/id_ed25519.pub

魔王教授:この公開鍵の中身をコピーして、GitHubに登録するぞ。

わかばちゃん:じゃあ、マウスでコピー & ペーストして……

魔王教授:ストップ! 手でコピーすると、いらないスペースが混じってしまったり、1文字コピーし忘れたりしてしまうかもしれないぞ。確実なのは pbcopy コマンドでコピーする方法だ。

公開鍵をGitHubに登録しよう

ブラウザでGithubを開きます。右上の自分のアイコンをクリックし「Settings」→「SSH and GPG keys」を開きます。 https://github.com/settings/keys

image

「New SSH Key」ボタンをクリックします。

image

公開鍵を登録します。

  • 「Title」は、パソコン名にするとわかりやすいです。
  • 「Key type」は、Authentication Keyのままにします。
  • 「Key」欄に、さきほどコピーした公開鍵を貼り付けます。
  • 最後に「Add SSH Key」ボタンをクリックします。

image

GitHub上に、公開鍵を登録できました!

image

ターミナルから接続確認をしてみよう

いよいよ、SSH接続の準備が整いました。 次のコマンドで、自分のパソコンから GitHub に接続してみましょう。

あなたの画面に表示されたフィンガープリントが、次の GitHub が公開しているフィンガープリントと同じであることを確認したら"yes"と打ち込みます。

▼GitHub のフィンガープリント

github.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl

魔王教授: フィンガープリントとは、英語で「指紋」という意味だ。 これで、通信相手が正しく本人であるとチェックできるわけだな!

わかばちゃん: 通信相手は GitHub だと思っていたら、別の人だった……なんて怖いもんね。

次のようなメッセージが返って来たら、接続成功です!

Hi (あなたのGitHub ID)! You've successfully authenticated, but GitHub does not provide shell access.

エラーになったら

・「Permission denied (publickey).」と表示された場合

Permission deniedというのは、簡単にいうと「アクセス権がありません」という意味です。原因は複数考えられますが、よくあるのはパソコンに秘密鍵が登録されていないパターンです。

秘密鍵が登録されているかどうかは、次のコマンドで確認できます。

$ ssh-add -l -E sha256

すると The agent has no identities. と返ってきました。「秘密鍵が登録されていませんよ」という意味です。

次のコマンドで、秘密鍵のありかを教えてあげましょう。

$ ssh-add ~/.ssh/id_ed25519 ←秘密鍵が置いてある場所

Identity added と返ってきたら、無事秘密鍵が登録されました。 この上で、もう一度GitHubへ接続を試みましょう。

コラム:秘密鍵が第三者に流出しないよう注意

公開鍵は GitHub 上に登録しましたね。しかし、秘密鍵は絶対にアップロードしてはいけません。秘密鍵を保存するのは、自分のパソコンの中だけに限定し、外に出さないようにしましょう。

▼危険な例

  • リポジトリの中に秘密鍵を置いていたり、ソースコードの中に直接秘密鍵を書いている
  • どこかのサーバに秘密鍵をアップロードしてしまった
  • 複数人で秘密鍵を共用している (秘密鍵をメールで送ったり、USBメモリに保存して渡すのもNG)

魔王教授: もし、秘密鍵が外部に漏れてしまうと、なりすましにより悪用されてしまう可能性があるぞ。取り扱いに注意しよう!

参考文献

新しい SSH キーを生成して ssh-agent に追加する - GitHub 公式ドキュメント

SSHの公開鍵ってなに?