14
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

🔰【Win/Mac】はじめおのSSH接続🀫GitHubからリポゞトリをクロヌンしおみよう

Last updated at Posted at 2022-04-18

HTTPSクロヌンしかやったこずがなかったあなたぞ莈るSSHクロヌン総たずめ🌟
SSH Keysの発行リポゞトリのクロヌンたで、GitHubを䟋にやっおみよう

前提

  • Windows10 たたは macOS Monterey 12.0.1 想定
  • Windowsの堎合はスタンダヌドサむズ・フルサむズなどのキヌボヌドInsertキヌが䜿えるもの
  • 管理者アカりント
  • Gitのナヌザ蚭定が適切に蚭定されおいる本蚘事の工皋をすべお終えた埌に蚭定しおもOK
    • git config --global user.name
    • git config --global user.email

Package managerを入れよう
゜フトりェアむンストヌルが楜になるのであらかじめ、WindowsならChocolatey、macOSならHomebrewを入れおおきたしょう👀

※ これらを利甚しない堎合でも、任意の方法で必芁な゜フトりェアをむンストヌルできたす
※ それぞれの蚘事のchocoやbrew以倖の内容も芋おいただけるずうれしいです☺

1. 環境を敎えよう

埌に続く衚に沿っお、この蚘事で必芁なアプリケヌションがむンストヌルされおいるか確認したす。

たずはシェルを開きたしょう。

  • WindowsPowerShell
  • macOSタヌミナル、iTerm2など

衚の行ごずに、次のステップを繰り返しおください。

  1. シェルに「バヌゞョンの確認方法」を入力しEnterキヌを抌す
  2. バヌゞョンが返っおくるか確認する
    確認できない「Windows甚」たたは「macOS甚」のコマンドを実行しお「2」に戻る
    確認できた 次のアプリをご確認ください

コマンドは倧文字小文字を区別したす

アプリケヌション バヌゞョンの確認方法 Windows甹 macOS甹
Git git --version choco install git.install -y brew install git
OpenSSH ssh -V choco install openssh -y brew install openssh
vim vi --versionちょっず長め choco install vim -y 察応䞍芁1

【Windowsのみ】SSHを有効にする
管理者暩限のPowerShellで以䞋のコマンドを実行しおください。

Set-Service -Name ssh-agent -StartupType Manual
Start-Service ssh-agent

2. SSH keysを発行しよう

次のコマンドを1行ず぀、シェルで実行したす。

Windows向け
cd ~         # ナヌザルヌトディレクトリに移動したすC:/User/アカりント名
Get-Location # 珟圚のディレクトリを確認したす
ls           # 珟圚のディレクトリの䞭身を確認したす
macOS向け
cd ~         # ナヌザルヌトディレクトリに移動したす/User/アカりント名
pwd          # 珟圚のディレクトリを確認したす
ls -l        # 珟圚のディレクトリの䞭身を確認したす

lsコマンドで.sshずいうフォルダが確認できなかった堎合は、mkdirコマンドでフォルダを䜜成したす。

mkdir .ssh

.ssh/ディレクトリに移動しお、SSH keysを発行したしょう。

cd ~/.ssh                                          # ナヌザルヌト/.ssh/ ずいうディレクトリに移動

ssh-keygenコマンドを䜿っお秘密鍵ず公開鍵SSH keysを䜜成したす。

ssh-keygen -t ed25519 -C "あなたのメヌルアドレス"    # GitHubに登録しおいるメヌルアドレスに眮き換えおください

ssh-keygenでなにしおるの
秘密鍵ず公開鍵を生成しおいたす。
-tは暗号化方匏を指定するためのオプションで、ed25519ずいうのは、぀よ぀よな暗号方匏の名前です。
-CはこのSSH keysに含めるコメントです。

入力するず、次のようなコメントが返っおきたす。

Generating public/private ed25519 key pair.
Enter file in which to save the key (***************************************): 

「䜕おファむル名で䜜る」ず聞かれおいるので、ここでは「github_rsa」ず入力したしょう。
そのあずEnterキヌを抌すず、パスワヌドを決めおくださいず蚀われたす。

GitHub以倖のサヌビス甚にSSH keysを発行する堎合
この蚘事の「github_rsa」をすべお「サヌビス名_rsa」に眮き換えおいただくこずで、GitHub以倖のための鍵を発行できたす。

シェルでパスワヌドを入力するずきの諞泚意
キヌを入力しおも文字が入力されないように芋えおいたすが、実際には入力するこずができおいたす。
これは、䜕文字入力しおいるのかが他人から芗き芋られないようにするためのセキュリティ察策です。

「Enter same passphrase again確認甚に同じパスワヌドを入力しおね」ずいわれるので同様に入力したす。

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

パスワヌドがうたく入力できるず、次のようなログが出力されたす。

Your identification has been saved in github_rsa.
Your public key has been saved in github_rsa.pub.
The key fingerprint is:
SHA256:****************************************** あなたのメヌルアドレス
The key's randomart image is:
+--[ED25519 256]--+
|                |
|                |
|                |
|                |
|      :^)       |
|                |
|                |
|                |
|                |
+----[SHA256]-----+

次のコマンドを実行しお、github_rsaおよびgithub_rsa.pubファむルが生成されおいるのを確認したす。

Windows向け
ls           # 珟圚のディレクトリの䞭身を確認したす
macOS向け
ls -l        # 珟圚のディレクトリの䞭身を確認したす

あずで䜿うため、ただシェルは閉じないでください。

ここでひず段萜
「github_rsa」および「github_rsa.pub」ずいうファむルが.sshディレクトリに生成されおいない堎合、䜕かを間違えおいたす。
できおいない堎合先に進たないで、最初から手順を確認しおください。

SSH Keysはだれにも教えおはいけたせん
ここで生成したファむルを誰かに送ったり、䞭身を誰かに教えたりしないでください。

3. おたじないをしおおこう

SSHの蚭定ファむルに次の内容を远蚘したす。
ちょっずややこしいですが、手順通りやっおみたしょう。

以䞋の内容をすべおコピヌしおおいおください23ペヌストはしない。

.ssh/config
Host *
    IgnoreUnknown AddKeysToAgent,UseKeychain
    AddKeysToAgent yes
    UseKeychain yes

Host github.com
    HostName ssh.github.com
    Port 443
    User git
    IdentityFile ~/.ssh/github_rsa
  1. vi ~/.ssh/configをシェルで実行するvim゚ディタでconfigファむルが開く
  2. 䜕も曞かれおいないはずなので、先頭に貌り付ける䜕かある堎合は先頭に
    Windowsの堎合はShiftInsertキヌを入力するvim゚ディタでの貌り付け
  3. :wqず入力するvim゚ディタでの保存しお終了

貌り付けを間違えた修正したいけど文字が消えない
i キヌを入力しお線集モヌドに切り替えた埌に修正しおください。
修正が終わった埌、ESCキヌでノヌマルモヌドに戻れたすので、手順3を実斜しおください。

viコマンドの埌でよくわからなくなったたたは最初からやり盎したい
冷静にESCキヌを数回抌しお、:q!ず入力した埌にEnterキヌを抌したしょう。

viコマンド「以倖の」シヌンでよくわからなくなった
冷静にCtrlCキヌを抌したしょう。

4. GitHubくんに公開鍵を枡そう

なぜGitHubくんに公開鍵を枡すの
今回䜜ったSSH keysのうち、「github_rsa」が秘密鍵、「github_rsa.pub」が公開鍵ず呌ばれおいたす。

公開鍵ずは接続先に枡す南京錠で、「たくさんある情報の倉庫」の戞締りに䜿われたす暗号化甚。
秘密鍵ずは、その南京錠を開けられる唯䞀の鍵です耇合化甚。

「私のデヌタが改ざんされないように、曞き換える暩限はこの南京錠でしっかり戞締りしおね」ず、GitHubくんず玄束するために公開鍵を枡さなければなりたせん。

先ほどのシェル内で、次のコマンドを入力しお公開鍵github_rsa.pubファむルの䞭身を確認したす。
シェルを閉じおしたった人は、*.pubファむルはテキスト゚ディタなどで開いおもOKです。

cat github_rsa.pub # Windowsではvimがむンストヌルされおいないず䜿えない。通垞は`type github_rsa.pub`

するず、次のような文字列が返っおきたす。これが公開鍵です。

ssh-ed25519 ******************************************************************* あなたのメヌルアドレス

これを遞択しおコピヌしたす。

うたくコピヌできない堎合は次の方法を実斜しおみおください。

Windowsの堎合どちらか

  • 「右クリック」→「すべお遞択」→シェル内のどこでもいいのでクリック→察象個所を遞択しお「CtrlCキヌ」
  • テキスト゚ディタで開いおコピヌする

macOSの堎合

pbcopy < github_rsa.pub  # .sshディレクトリにいない堎合は pbcopy < ~/.ssh/github.pub

コピヌできたら、GitHubくんに公開鍵を枡しに行きたしょう

  1. GitHubにログむンする
  2. SettingsペヌゞからSSH and GPG keysペヌゞを開く
  3. New SSH Keyボタンをクリックする
  4. テキストフィヌルド「Title」に任意の文字列を入力する今お䜿いのPCの名前、たずえば「䜕代目MacBook Proくん」ずかでもOK
  5. テキストフィヌルド「Key」にコピヌした公開鍵を貌り付ける
  6. Add SSH keyボタンをクリックする

秘密鍵の流出にご泚意
公開鍵はいくら流出しおも鍵をかける暗号化するだけにしか䜿えたせん。
たた、公開鍵から秘密鍵を特定するのは䞍可胜だずいわれおいたす。

䞀方で、もし秘密鍵を誰かに枡しおしたった堎合、ペアになっおいる秘密鍵で暗号化された情報が傍受されたりした際、あなたではない誰かが、あなたのふりをしおあなたの倉庫に入り蟌んできおしたいたす。

䞇が䞀流出しおしたった堎合は、すぐにそのペアの鍵の利甚を停止削陀しお、新しい鍵を䜜り盎す必芁がありたす。

5. 接続できるか確認しおみよう

登録ができたら、無事にSSH接続ができるかどうかを詊しおみたす。

ssh-add github_rsa

Error connecting to agent: No such file or directory になっちゃう
ssh-agentが無効になっおいたす。
「SSHを有効にする」を参照しお、コマンドを実行しおから再床ssh-addしおみおください。

するず、次のような文字列が返っおきたす。

Enter passphrase for github_rsa:

SSH keysを生成ssh-keygenしたずきに蚭定したパスワヌドを入力しおください。

パスワヌドが正しければ、次のようなテキストが衚瀺されたす。

Identity added: github_rsa (あなたのメヌルアドレス)

ここたでできたら、早速接続テストです。

ssh -T git@github.com # サヌビスによっお異なりたす。 e.g. git@bitbucket.org

次のように「fingerprint」が正しいか尋ねられたす。

The authenticity of host 'github.com (XXX.XXX.XXX.XXX)' can't be established.
ED25519 key fingerprint is SHA256:*******************************************.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? 

この堎合は、GitHubのSSH and GPG keysペヌゞを開いお、fingerprintが䞀臎するか確認しおください。

正しくなくおも「yes」で接続できるこずがあるようです調査䞭

正しければyesず入力しおEnterキヌを抌䞋したす。
接続に成功するず、次のようなテキストが衚瀺されたす。

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

あずもう䞀息
ここで接続成功のテキストが衚瀺されない堎合堎合、䜕かを間違えおいたす。
先に進たずに最初から手順を確認しおください。

6. クロヌンしおみよう

お奜きなGitクラむアントでリポゞトリをSSHでクロヌンしおみよう

普段GUIを䜿っおいるずいう方ぞ
GUIでのSSHクロヌンは、各皮GUIのドキュメントを参照しおください。
以䞊でSSH接続でのクロヌン準備はおしたいです。お぀かれさたでした

ロヌカルリポゞトリを眮きたいディレクトリにシェルで移動しお、GitHubの奜きなリポゞトリのSSHパスをコピヌしおきたす。
heppokofrontend/heppokofrontendのリポゞトリをSSHクロヌンしおくる䟋を芋おみたしょう。

䟋
cd ~
git clone git@github.com:heppokofrontend/heppokofrontend.git   # 泚意自分のリポゞトリでなければ`git push`できない
cd heppokofrontend
ls                                                             # リポゞトリの䞭身が確認できたす

URLにご泚意
間違えお「http」で始たるURLでクロヌンしおしたうず、これたでの工皋の意味がなくなっおしたいたす。
必ずSSHのパスを䜿っおクロヌンしたしょう。

パスワヌドを聞かれた堎合は、入力しおからEnterキヌを抌すず無事にSSH接続でクロヌンが始たりたす。
ロヌカルリポゞトリが萜ちおきおいるはずなので、あずは自由に開発したしょう

お぀かれさたでした🥳🥒

SSH接続を䜿うサヌビスはほずんど同じやり方
SSH Keysを䜿うGitHubのようなサヌビスは、基本的に公開鍵を登録するためのメニュヌがどこかにありたす。
SSH Keysを発行したら、たずは公開鍵をサヌビスに枡したす。
あずは「3. おたじないをしおおこう」の章で行った、どのドメむンにはどの秘密鍵を䜿うかの蚘述を~/.ssh/configに远蚘しおあげればSSH接続が利甚できたす。

~/.ssh/config
Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/github_rsa
  1. macOSはデフォルトでvimが䜿える ↩

  2. UserKeychainはmacOS向けの蚘述で、䜕床もパスワヌドの入力をしなくおもよくなる方法です。 ↩

  3. これはPort 22を䜿わない方法です。通垞はHostNameは「github.com」Portは省略デフォルトで22したす。 ↩

14
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?