未来エンジニア養成所Blog

プログラミングを皆に楽しんでもらうための情報をお届けします。

GitHubでSSH接続する手順

今までずっとHTTPS接続を使用していましたので、改めてSSH接続の手順をまとめておきたいと思います。


公開鍵と秘密鍵を作成する

公開鍵暗号での認証には公開鍵と秘密鍵が必要になります。 秘密鍵は秘密というだけあって他の人に見られてはいけません。つまりどこかに送信してはいけません。 逆に公開鍵は公開と言っていますので他の人に見られてもOKです。 秘密鍵は自分で保持し、公開鍵は相手(ここではGitHub)に送ります。 まずは公開鍵と秘密鍵のペアを生成しましょう。


まず最初に、鍵を入れるフォルダ(ここでは ~/.ssh )に移動します。

$ cd ~/.ssh


はじめて鍵を生成するときは何も入っていないはずです。

ssh-keygen -t rsa のコマンドで鍵を生成します。

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/(username)/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:


Enter file in which to save the key
Enter passphrase
Enter same passphrase again


と聞かれますが、すべてEnterを押してもらえればOKです。
そうすると id_rsaid_rsa.pub の2つの鍵が生成されます。
既にid_rsaが存在する人は上書きされてしまうので注意しましょう。


もし違う名前で生成したい時は

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/(username)/.ssh/id_rsa):id_git_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

のように、1回目に聞かれたタイミングで名前(ここでは id_git_rsa)を指定します。 あとはEnterで id_git_rsaid_git_rsa.pub が生成されます。

ちなみに、名前を指定しない時は勝手に ~/.ssh 内に鍵を生成してくれますが、上記のように名前を指定するときは ~/.ssh 内にいないとこの中に生成してくれないので注意です。


公開鍵をGitHubにアップする

https://github.com/settings/ssh

で公開鍵の設定が出来ます。(GitHubに登録していることが前提条件です)


f:id:MiraiEngineer:20201221145544p:plain

画面右上の「New SSH key」のボタンを押します。


「Title」に公開鍵名、「Key」に公開鍵の中身を入れます。

f:id:MiraiEngineer:20201221145610p:plain

なお、鍵の中身のクリップボードへのコピーは下記コマンドで可能です。

(Mac)

$ pbcopy < ~/.ssh/id_rsa.pub



(Windows)

$ clip < ~/.ssh/id_rsa.pub

*鍵の名前は自分の作成したもの。


接続を試してみよう

$ ssh -T git@github.com

Hi (account名)! You've successfully authenticated, but GitHub does not provide shell access.


と返ってきたら接続完了!


しかし…

鍵を作るときに名前を指定していると、うまくいかない可能性もあるようです。

それは、ssh接続の際「~/.ssh/id_rsa」、「~/.ssh/id_dsa」、「~/.ssh/identity」しかデフォルトでは見にいかないからです。

それに対応するためには ~/.ssh/config を作成しその中に

Host github github.com
  HostName github.com
  IdentityFile ~/.ssh/id_git_rsa #ここに自分の鍵のファイル名
  User git

を作成しましょう。

これで、もう一度接続をやってみるとうまくいくはずです。

以下のようにコマンドを打って確かめて見ましょう。

ssh -T github


GitHubとやりとりする

GitHubと実際にやりとりするときにID・パスワードを聞かれた場合はSSH接続がうまくいっていません。

リポジトリディレクトリに入り

git config remote.origin.url

で確認し https://github.com/[ユーザID]/[リポジトリ]となっていたら

git remote set-url origin git@github.com:[ユーザID]/[リポジトリ].git

とする。

~/.ssh/config で設定している場合は

git remote set-url origin [Host名]:[ユーザID]/[リポジトリ].git



[Host名]とは~/.ssh/configの一行目のHostの名前(ここではgithub)のことです。

ちなみに、この設定はリポジトリディレクトリ内の /.git/config で設定出来ます。



さらに詳細を知りたい人は下記の本がお勧めです。(詳細は画像をクリック)



オンラインプログラミングスクール
未来エンジニア養成所Logo