-
Notifications
You must be signed in to change notification settings - Fork 3.9k
Home
書籍「わかばちゃんと学ぶGit使い方入門」 のサポートページです。
ここでは主にSSH設定方法を解説します。
大まかな流れは次のとおりです。
- 公開鍵と秘密鍵を作る。
- 秘密鍵を自分のパソコンに登録する。
- 公開鍵はGitHubへ登録する。
- SSH接続できることを確認する。
*SSH・・・Secure Shell(セキュアシェル)の略。離れた場所にあるコンピュータと通信するための方法のひとつ。SSHを使うと、すべての通信が暗号化され、第三者に簡単には解読できないようになる。
魔王教授: WindowsとMacで操作方法が異なるぞ。
Windows版の解説は準備中です。申し訳ありませんが、GitHub公式の記事をご確認ください。
魔王教授: Mac版は、コマンド操作で進めていくぞ。
わかばちゃん: え〜!? クリック操作じゃできないの!?
魔王教授: 短い英単語を書いてあるとおりに打ち込むだけだから、一緒に頑張ろう!
※コマンド操作について、詳しくは「ふろく:コマンド操作に挑戦!」で解説しています。
最初に、コマンド操作をするための画面を立ち上げましょう。
SourceTreeを開きます。
画面右上の「端末」をクリックします。
次のような画面が開きます。以降、この画面をターミナルと呼びます。 背景は白いこともあります。
それでは、公開鍵と秘密鍵を作りましょう。この2つの鍵は、同時に作ります。 次のコマンドを入力しましょう。最後にエンターキーを押して実行します。
$ ssh-keygen -t ed25519 -C ""
※「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 user@wakaba-iMac.local
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を開きます。右上の自分のアイコンをクリックし「Settings」→「SSH and GPG keys」を開きます。 https://github.com/settings/keys
「New SSH Key」ボタンをクリックします。
公開鍵を登録します。
- 「Title」は、パソコン名にするとわかりやすいです。
- 「Key type」は、Authentication Keyのままにします。
- 「Key」欄に、さきほどコピーした公開鍵を貼り付けます。
- 最後に「Add SSH Key」ボタンをクリックします。
GitHub上に、公開鍵を登録できました!
いよいよ、SSH接続の準備が整いました。 次のコマンドで、自分のパソコンから GitHub に接続してみましょう。
$ ssh -T git@github.com
あなたの画面に表示されたフィンガープリントが、次の 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へ接続を試みましょう。
$ ssh -T git@github.com
公開鍵は GitHub 上に登録しましたね。しかし、秘密鍵は絶対にアップロードしてはいけません。秘密鍵を保存するのは、自分のパソコンの中だけに限定し、外に出さないようにしましょう。
▼危険な例
- リポジトリの中に秘密鍵を置いていたり、ソースコードの中に直接秘密鍵を書いている
- どこかのサーバに秘密鍵をアップロードしてしまった
- 複数人で秘密鍵を共用している (秘密鍵をメールで送ったり、USBメモリに保存して渡すのもNG)
魔王教授: もし、秘密鍵が外部に漏れてしまうと、なりすましにより悪用されてしまう可能性があるぞ。取り扱いに注意しよう!