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に切り替わる。