1. TOPTOP
  2. インフラ
  3. GitHub

Linux環境の外部サーバーからGitHubに接続できるがローカルのWindowsからは接続できない!GitHub実践入門を読みながら思うこと

|

github

GitHubで作成したリポジトリのアクセス認証を、SSHの公開鍵認証方式で行う場合、次の2つの作業が必要になります。

  • 認証に必要な公開鍵と秘密鍵を作成
  • GitHubへの公開鍵の登録
  • 認証の確認

以下はLinux環境(さくらのクラウド)で、試したみた動作にもとづいて説明しています。

さくらのクラウドからGitHubに接続

公開鍵と秘密鍵の作成

ssh-keygenを実行します。途中でいろいろ聞かれますが、カッコ書きの通りにすすめていきます。

$ 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:(パスフレーズ入力)

パスワードの入力が終わると、作業用ユーザの.sshフォルダに公開鍵(id_rsa.pub)と秘密鍵(id_rsa)が、出来上がっています。

github_authentication1

GitHubへの公開鍵の登録

catコマンドを実行すると、公開鍵の内容が表示されます。この内容をGitHubのSSH Keysの画面から、[Add SSH key]ボタンを押して公開鍵をコピペして登録します。

github_authentication2

認証の確認

登録が無事に終了すれば、登録したメールアドレスにGitHubから、公開鍵登録完了のメールが届きます。認証が実際に行えるかどうかを確認するため、次のコマンドを実行します。

$ ssh -T git@github.com
Enter passphrase for key '/home/作業用ユーザ名/.ssh/id_rsa':(パスフレーズ)

パスフレーズまで入力して、次のように表示されれば認証に成功したことになります。

Hi 作業用ユーザ名! You've successfully authenticated, but GitHub does not provide shell access.

今回の例ではLinux環境にある、さくらのクラウドで試していますが、ローカル環境のMacでも同じ作業をすることになるでしょう。

なおこれらの作業は、GitHub実践入門(新しいタブで開く)のP29~P31を参考にさせてもらっています。

リモートサーバーからアクセスするのはありか?

自分で紹介していて言うのもアレですが、上記で紹介したやり方では疑問に思うことがあります。それは外部のサーバー(さくらのクラウド)で、公開鍵と秘密鍵を作ってしまっているところです。

秘密鍵はローカルに格納したいのだが…

Macの場合、ローカル環境でペアの鍵を作って、そのまま秘密鍵を/.sshフォルダに納めることができますが、Windowsの場合、/home/作業用ユーザ名/.ssh/id_rsaに該当する場所が分かりません。

鍵(特に秘密鍵)をサーバー上に作ってしまっていいのかな~?(もちろん当該のサーバーには、SSH認証やファイアーウォールなどによる安全対策は施していますが)

UNIXとMS-DOSではいろいろ違いますな

Windows固有のやり方はないかと探していると、1つありました。こちらのサイト(新しいタブで開く)で紹介されています。

ただ試してみたところ、自分の場合、上手く行きませんでした。TeraTermで公開鍵・秘密鍵を作り、公開鍵をGitHubに、秘密鍵をCドライブに格納して以下のコマンドを実行しましたが、

eval `ssh-agent`
ssh-add /C/Users/Hiroshi Fukui/ssh/id_rsa
No such file or directory

が返されてしまいます。ちなみに上記のssh-addを、sudoで実行すると

Could not open a connection to your authentication agent.

が返ってきます。鍵はローカルで作った方がいいと思いますので、さてどうしたものやら。

〔参考サイト〕