未来エンジニア養成所Blog

月単価180万以上のプログラミング講師がプログラミングを皆に楽しんでもらうための情報をお届けします。

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