owned mediaウェブ制作に役立つコンテンツを発信中!

GitHubでHTTPS通信のパスワード認証から公開鍵を作成してSSHで接続できるようにする

普段使っているGitHubですが、接続方法がHTTPS通信でのパスワード認証方式と、公開鍵でのSSH接続の2つがあります。パスワード認証の場合、公開鍵を作成する必要はないのですが、都度パスワードの入力が求められ面倒なのと、2021年の8月にこのパスワード認証自体が廃止になるということで、早い段階で公開鍵を使ったSSH認証に対応しておく必要があります。今回はGitHubにSSH接続するまでの流れを備忘録として残しておきたいと思います。  
公開鍵・秘密鍵のキーペアの作成と設定
まずはローカル側に公開鍵と秘密鍵のキーペアを作成していきます。SSH用の鍵があるディレクトリまで移動し、下記のコマンドでキーペアを作成します。下記のコマンドではそこまでセキュリティ強度は強くないため、必要に応じて対応を行います。
$ cd ~/.ssh
$ ssh-keygen -t rsa
  最初の質問で生成するファイル名を設定します。下記のように鍵の名前を任意で設定します。そのまま進む場合では、秘密鍵は「id_rsa」公開鍵は「id_rsa.pub」という名前のファイル名になります。すでに同じ名前のファイルがある場合、上書きされてしまうので注意します。
Enter file in which to save the key (/Users/USER_NAME/.ssh/id_rsa): 鍵の名前
  続いての質問ではパスワードを設定できます。不要であればそのままエンターキーを入力することでパスワードを設定せずに作成できます。
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
  キーペアの生成が終わると下記のように指定したファイル名で生成されたことを示すメッセージが表示されます。
Your identification has been saved in **********.
Your public key has been saved in **********.pub.
  続いて作成した鍵の設定ファイルでエイリアスの設定を行います。下記のように同じディレクトリに「config」という名前で新規ファイルを作成します。作成したらSSH通信時にパーミッションエラーが発生することがあるので、パーミッションの値を600に変更しておきます。
$ touch ~/.ssh/config
$ chmod 600 ~/.ssh/config
  ファイルの中に下記のようにホスト名と秘密鍵を関連づけるエイリアスの設定を行います。こうすることで鍵ファイルを指定しなくてもエイリアス名で接続できるようになります。
Host github.com
  HostName github.com
  IdentityFile ~/.ssh/秘密鍵のファイル名
  User git
  これでひとまずはローカル側での作業が完了しました。続いてリモート側(GitHub)での作業を進めていきます。  
GitHubに公開鍵を登録
GitHubにログインし、「Settings」→「SSH and GPG keys」から公開鍵の登録を行います。ページ右上にある「New SSH key」をクリックします。   ラベル用のタイトルを入力して、Keyの項目には公開鍵の中身を全てコピーしてそのまま貼り付けて入力します。   キーの一覧画面で先ほど登録した公開鍵が追加されているのがわかります。   これでSSH接続ができるようになりました。下記のコマンドでSSH接続をテストして次のようなメッセージが返ってきたらOKです。
$ ssh -T git@github.com
Hi USER_NAME! You've successfully authenticated, but GitHub does not provide shell access.
  最後に、HTTPS通信のパスワード認証で使っていたリポジトリでは、リモート側のoriginのURLがHTTPS通信用のものになっている状態ですので、まだパスワードの入力が求められてしまいます。そこでoriginのURLをSSH接続用のものに変更してあげる必要があります。リポジトリにある「.git/config」ファイルでURLの値をSSH接続用のものに上書きしておきます。 【.git/config】
.....
[remote "origin"]
  url = git@github.com:USER_NAME/REPOSITORY_NAME.git
  .....
.....
  これで、めでたくpullやpushの操作もパスワード認証なしでSSH接続で行えるようになりました。  
  間も無くGitHubでのHTTPS通信を使ったパスワード認証が廃止されるということで、普段パスワード認証でGitHubを使っている場合には早めに対応を進めておきたいですね。パスワード認証より公開鍵認証の方がよりセキュリティも高まりますし、都度のパスワード入力も不要というメリットがあるのでチェックしておきたいですね。   (参考にさせて頂いたサイト) GitHubにssh接続できるようにする
  • はてなブックマーク
  • Pocket
  • Linkedin
  • Feedly

この記事を書いた人

Twitter

sponserd

    keyword search

    recent posts

    • Twitter
    • Github
    contact usscroll to top
      • Facebook
      • Twitter
      • Github
      • Instagram