GitHubで作成したリポジトリのアクセス認証を、SSHの公開鍵認証方式で行う場合、次の2つの作業が必要になります。
- 認証に必要な公開鍵と秘密鍵を作成
- GitHubへの公開鍵の登録
- 認証の確認
以下はLinux環境(さくらのクラウド)で、試したみた動作にもとづいて説明しています。
さくらのクラウドからGitHubに接続
公開鍵と秘密鍵の作成
ssh-keygenを実行します。途中でいろいろ聞かれますが、カッコ書きの通りにすすめていきます。
[php]
$ ssh-keygen -t rsa -C "myemail@email.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/作業用ユーザ名/.ssh/id_rsa):([Enter]キー入力)
Enter passphrase (empty for no passphrase):(パスフレーズ入力)
Enter same passphrase again:(パスフレーズ入力)
[/php]
パスワードの入力が終わると、作業用ユーザの.sshフォルダに公開鍵(id_rsa.pub)と秘密鍵(id_rsa)が、出来上がっています。
GitHubへの公開鍵の登録
catコマンドを実行すると、公開鍵の内容が表示されます。この内容をGitHubのSSH Keysの画面から、[Add SSH key]ボタンを押して公開鍵をコピペして登録します。
認証の確認
登録が無事に終了すれば、登録したメールアドレスにGitHubから、公開鍵登録完了のメールが届きます。認証が実際に行えるかどうかを確認するため、次のコマンドを実行します。
[php]
$ ssh -T git@github.com
Enter passphrase for key ‘/home/作業用ユーザ名/.ssh/id_rsa’:(パスフレーズ)
[/php]
パスフレーズまで入力して、次のように表示されれば認証に成功したことになります。
[php]
Hi 作業用ユーザ名! You’ve successfully authenticated, but GitHub does not provide shell access.
[/php]
今回の例ではLinux環境にある、さくらのクラウドで試していますが、ローカル環境のMacでも同じ作業をすることになるでしょう。
なおこれらの作業は、GitHub実践入門のP29~P31を参考にさせてもらっています。
リモートサーバーからアクセスするのはありか?
自分で紹介していて言うのもアレですが、上記で紹介したやり方では疑問に思うことがあります。それは外部のサーバー(さくらのクラウド)で、公開鍵と秘密鍵を作ってしまっているところです。
秘密鍵はローカルに格納したいのだが…
Macの場合、ローカル環境でペアの鍵を作って、そのまま秘密鍵を/.sshフォルダに納めることができますが、Windowsの場合、/home/作業用ユーザ名/.ssh/id_rsaに該当する場所が分かりません。
鍵(特に秘密鍵)をサーバー上に作ってしまっていいのかな~?(もちろん当該のサーバーには、SSH認証やファイアーウォールなどによる安全対策は施していますが)
UNIXとMS-DOSではいろいろ違いますな
Windows固有のやり方はないかと探していると、1つありました。こちらのサイトで紹介されています。
ただ試してみたところ、自分の場合、上手く行きませんでした。TeraTermで公開鍵・秘密鍵を作り、公開鍵をGitHubに、秘密鍵をCドライブに格納して以下のコマンドを実行しましたが、
[php]
eval `ssh-agent`
ssh-add /C/Users/Hiroshi Fukui/ssh/id_rsa
[/php]
[php]
No such file or directory
[/php]
が返されてしまいます。ちなみに上記のssh-addを、sudoで実行すると
[php]
Could not open a connection to your authentication agent.
[/php]
が返ってきます。鍵はローカルで作った方がいいと思いますので、さてどうしたものやら。
〔参考サイト〕