グレインの備忘録

プログラミング関係とかをつらつらと。

SSHでGitHubに接続する

パスワード認証の問題点

GitコマンドでGitHubにpush/pullするためには何らかの形で認証方法を与えてやる必要がある。

一つはユーザー名とパスワードを入力する方法である。

ところが、これは毎回パスワードを入力する必要があるので面倒臭い。
(一応パスワードを保存することもできるが、平文で保存されるためセキュリティ上全くよろしくない。)

そこでSSHが登場する。

SSH公開鍵暗号通信

SSHを使えば、最初に鍵生成する手間はかかるが、認証情報を入力する必要はない。

また、マシンごとに秘密鍵を作っておけば漏洩時の対処もしやすい。

ちなみに、SSHのデメリットは特にないと思われる。

鍵生成

鍵生成および通信にはopensshが必要なので入れておく。

$ sudo pacman -S openssh

ssh-keygenで鍵生成。

$ ssh-keygen -t rsa

生成場所はデフォルトのままにしておく。
パスフレーズは設定しても構わないが、設定するとpushのたびに入力する必要がある。

生成が完了したら~/.ssh/id_rsa.pubに公開鍵が生成されているはずなので、中身をコピーする。

あとは、GitHubの「Settings」→「SSH and GPG keys」→右上の「New SSH Key」から登録しておしまい。

HTTPSでcloneしたリポジトリSSHに切り替え

GitHubからcloneするときは大抵HTTPSを使うと思うが、このままではSSHでpush/pullできない。

そこで、モードを切り替える。

対象のローカルリポジトリディレクトリに移動して、

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

とする。これでsshに切り替わる。