LoginSignup
2
2

More than 5 years have passed since last update.

セキュアで簡便なGithubアクセスの実現

Posted at

はじめに

これまで会社で利用しているGithubのプライベートレポジトリへのアクセスにはHTTPSを利用していた。
リモートレポジトリへプッシュする度にユーザ名とパスワードを入力するのが面倒だったが、セキュリティ上我慢していた。
また設定ファイルやoriginのURLに直接ユーザ名、パスワードを指定するのはもってのほかだと思って我慢していた。

でももう我慢する必要はない。

GithubへはSSH接続できることが分かったからだ!(遅い)

Githubへのアクセスに利用できるプロトコル

公式に利用できるのは以下の2つ。

  • https
  • ssh

sshなんてあったかなと思うかもしれないが、
「Clone or Download」ボタンを押下すると右上に
「Use SSH」というリンクがありssh用のURLもコピーできるようになっている。

なおドキュメントはないが以下も利用できるらしい。*1

  • http
  • git

どちらもセキュアではないのであえて利用する必要はない。
gitについてはread-onlyアクセス。

またGitとしては上記に加えてLocal(ファイルシステムアクセス)が利用できるらしい。*2

 HTTPSとSSHの使い分け

所感だが、Pro Git Book (*2) を参考にすると以下のような使い分けになる。

  • HTTPS
    • パブリックレポジトリとして不特定多数に公開する場合(読込み専用レポジトリ)
    • 企業ネットワーク内からアクセスする場合(ファイヤーウォール対策)
  • SSH
    • プライベートレポジトリとして特定のメンバーに公開を限定している場合
    • 転送効率を重視する場合

SSHによるアクセス方法

前置きが長くなったがSSHアクセスの設定方法を
「これからcloneする新規のレポジトリ」と「すでにcloneしている既存のレポジトリ」のそれぞれのケースで紹介する。

cloneの段階でSSHのURLを選択する場合(新規のレポジトリ)

  1. sshの秘密鍵と公開鍵を生成(パスワードなしでアクセスしたい場合はパスフレーズを空にする)
  2. 生成した公開鍵をGithub上に登録
    • レポジトリへのプッシュを行うユーザのアカウントの「Settings」>「SSH and GPG Keys」>「New SSH key」に登録
  3. 「Clone or Download」>「Use SSH」で表示されるURLをコピー
  4. コピーしたURLでレポジトリをClone

    % git clone git@github.com:レポジトリ所有者アカウント名/レポジトリ名.git
    

    ※URLの@の左側がgitとなっているが、このユーザ名は認証には利用していないようなので「hoge」でも省略でも問題ない。

  5. 確認

   % ssh github.com
   Enter passphrase for key '/Users/xxxx/.ssh/id_rsa':
   PTY allocation request failed on channel 0
   Hi <プッシュを行うユーザのアカウント名>! You've successfully authenticated, but GitHub does not provide shell access.
   Connection to github.com closed.

※SSHの鍵生成時にパスフレーズを設定しなかった場合はパスワード要求はない

cloneの段階で一旦HTTPSのURLを選択した場合(既存のレポジトリ)

  1. sshの秘密鍵と公開鍵を生成(パスワードなしでアクセスしたい場合はパスフレーズを空にする)
  2. 生成した公開鍵をGithub上に登録
    • レポジトリへのプッシュを行うユーザのアカウントの「Settings」>「SSH and GPG Keys」>「New SSH key」に登録
  3. cloneしたマシン上でoriginのURLを変更

    % git remote -v
    origin  https://github.com/レポジトリ所有者アカウント名/レポジトリ名.git (fetch)
    origin  https://github.com/レポジトリ所有者アカウント名/レポジトリ名.git  (push)
    
    % git remote set-url origin git@github.com:レポジトリ所有者アカウント名/レポジトリ名.git
    
    % git remote -v
    origin  git@github.com:レポジトリ所有者アカウント名/レポジトリ名.git (fetch)
    origin  git@github.com:レポジトリ所有者アカウント名/レポジトリ名.git (push)
    
    

    ※URLの@の左側がgitとなっているが、このユーザ名は認証には利用していないようなので「hoge」でも省略でも問題ない。

  4. 確認

   % ssh github.com
   Enter passphrase for key '/Users/xxxx/.ssh/id_rsa':
   PTY allocation request failed on channel 0
   Hi <プッシュを行うユーザのアカウント名>! You've successfully authenticated, but GitHub does not provide shell access.
   Connection to github.com closed.

※SSHの鍵生成時にパスフレーズを設定しなかった場合はパスワード要求はない

参考URL

*1: http://qiita.com/chroju/items/67da13c672efcd2bc787
*2: https://git-scm.com/book/ja/v1/Git-%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC-%E3%83%97%E3%83%AD%E3%83%88%E3%82%B3%E3%83%AB

2
2
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
2
2