[GitHub] SSHの鍵を登録しパスワード入力を不要にする

  • このエントリーをはてなブックマークに追加
  • LINEで送る

GitHubを利用している際に、HTTPSでリポジトリをcloneしているとpushやpullをする際に毎回IDとパスワードの入力を求められます。一時的にメモリ上などにキャッシュすることも出来るのですが、一定期間が経過すると再び入力する必要があるため根本的な解決になりません。

$ git push
Username for 'https://github.com': katsube      
Password for 'https://katsube@github.com': 

そこで今回はGitHubにSSHで利用する公開鍵を登録し、アカウント情報を毎回入力せずに済む設定を行います。

- Sponsored Link -

秘密鍵と公開鍵を作成する

まずはローカルで秘密鍵と公開鍵を作成します。
これは至って簡単でssh-keygenコマンドを実行するだけです。-tは暗号化方式、-bはビット長です。デフォルトは2048bitですが長めに設定した方が安全です。-Cはコメントなので任意の文字列を指定します(未指定も可)。鍵は端末やユーザー毎に作成することが多いのでどこで作成した鍵か分かる物にして置くと便利です。

$ ssh-keygen -t rsa -b 4096 -C 'katsube@CentOS'

ssh-keygenコマンドを実行するとァイルの場所、鍵にパスワードをかけるか質問されますのでそれぞれ答えます。パスワードは今回はかけません。エンターキーを押すと指定したパスにファイルが作成されます。

Enter file in which to save the key (/home/neec/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

デフォルトだとホームディレクトリの.sshディレクトリ内に生成されますので、lsコマンドなどで確認します。id_rsaが秘密鍵、id_rsa.pubが公開鍵です。GitHubには公開鍵の方を登録します。秘密鍵は他の人に見せないよう気をつけてください。ネットワークを介して送信することも避けたほうが安全です。また.sshディレクトリ自身と、秘密鍵のパーミションはオーナーだけが読み書きできるようになっていることも重要です。

$ ls -la .ssh/
drwx------   2 neec neec   57  7月  2 18:50 .
drwx------. 23 neec neec 4096  7月  2 18:33 ..
-rw-------   1 neec neec 3243  7月  2 18:50 id_rsa
-rw-r--r--   1 neec neec  740  7月  2 18:50 id_rsa.pub
-rw-r--r--   1 neec neec  405  6月  8 00:07 known_hosts

公開鍵を表示し、クリップボードにコピーしておきます。

$ cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC(中略)vAgP05Qw== katsube@CentOS

公開鍵をGitHubへ登録する

GitHubにログインし、右上のメニューなどから「Settings」をクリック。

左側のメニューから「SSH and GPG keys」をクリック。

右上にある「New SSH Key」をクリック。

Titleは適当な文字列を入力、Keyに先ほど生成した公開鍵を入力(ペースト)。下にある「Add SSH key」をクリック。改行やスペースなどの余計な文字が入っていたり、公開鍵の冒頭のssh-rsaやコメント部分を省略すると登録できなかったり認証時に失敗します。

先ほどの画面に戻ってきますので、自分が登録したキーが表示されていれば完了です。

確認する

GitHubからclone

GitHubから自分がオーナーのリポジトリをcloneしてきます。このとき必ずHTTPSではなくSSHを利用してください。

新規にリポジトリを作成した場合は、画面の上部でSSHとHTTPが切り替えられます。

今回は新規にリポジトリを作成したのでこれをgit cloneで取ってきます。

$ git clone git@github.com:katsube/hello1.git
Cloning into 'hello1'...
Warning: Permanently added the RSA host key for IP address '52.192.72.89' to the list of known hosts.
warning: You appear to have cloned an empty repository.

git add/commit

cloneした際に作成されたディレクトリへ移動し、適当なファイルを作ってcommitします。

$ cd hello1/
$ echo "SSH key test" > test.txt
$ git add test.txt 
$ git commit -m '1st commit'
[master (root-commit) 315eb17] 1st commit
 1 file changed, 1 insertion(+)
 create mode 100644 test.txt

git push

先ほどのcommitした情報をgit pushでGitHubへ送信します。

$ git push
Counting objects: 3, done.
Writing objects: 100% (3/3), 226 bytes | 226.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To github.com:katsube/hello1.git
 * [new branch]      master -> master

はい、IDやパスワードの入力を求められませんでしたね。

このブログを応援する

お寄せいただいたお気持ちは全額サーバ代や次の記事を執筆するための原資として活用させていただいております。この記事が参考になった場合などぜひご検討ください。

PayPal(ペイパル)
PayPalで500円支払う
※金額は任意で変更できます。
※100円でも泣いて喜びますw
※住所の入力欄が現れた場合は「no needed」を選択ください
これまでのご協力者さま
- Sponsored Link -

ご質問やリクエストなどお気軽に。メールアドレスの入力は任意です。書き込みが反映されるまで時間がかかります。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください