旅するえんじにあ - Engineers to Travel -

旅するエンジニアの気まま備忘録

【Git】 GithubにSSHの公開鍵を登録する

まぁ最近SVNじゃなくてGitだよね。 ってことでGit導入してみたはいいけど、SSHで鍵登録とかちょっと頭こんがらがりそうで って最初のうち結構そう思ってた。

公開鍵?秘密鍵

わからんよねー。

公開鍵とか秘密鍵っていうのは鍵交換方式認証で使うファイルで 秘密鍵のファイルってのは自分にしか見られないようにするのが鉄則。 公開鍵は認証を行うサーバに置いとくもの。

この2つの鍵がペアになっていることによってIDとパスワードの代わりをしてくれる。

ってことで早速登録していきましょう。

まずは自分のサーバ側 今回は今まで立てたVirtualBoxのローカルサーバ上で行いました。

まずは~/.sshがあるかないか。 なければ作っていきましょう。

# ssh-keygen -t rsa -C "mail@example.com"

mail@example.comはGitに登録したアドレスでも入れておいてください。 そうすると3つほど聞かれます。

保存場所

パスワード

パスワード(確認)

今回パスワードは飛ばしました。なのでEnter3回タタターンしました。

そうすると2つのファイルが~/.ssh以下にできます。

id_rsa             id_rsa.pub

この2つのファイルが公開鍵と秘密鍵になります。

まずはGithubの設定から「SSH Keys」を選択して「Add SSH key」をします。

TitleとKeyというのが出てくるのでTitleはわかりやすい名前を任意でつけます。

Keyには先ほど作ったファイルのid_rsa.pubをless等で表示させて、中のコードをすべてコピーして貼り付けます。

完了したらAdd key

これだけです。

ただ、これだけだと本当に登録されて疎通できるかわからないので確認しましょう。

# ssh -T git@github.com

少し待つと以下の文が出てくるので「yes」と打ちます

The authenticity of host '[ssh.github.com]:443 ([192.30.252.148]:443)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)?

以下文が表示されれば接続成功です。

Hi xxxx! You've successfully authenticated, but GitHub does not provide shell access.

ただ、繋がらない場合もあります。 一つは鍵作成の時にパスワードを登録した場合 この場合は以下コマンドを実行することによりパスワードを回避できます。

ssh-add ~/.ssh/id_rsa

また、以下のような文が表示され、port 22が使えない場合があります。

ssh: connect to host github.com port 22: Connection timed out

この場合は以下コマンドでportを変更して接続してみてください。

ssh -T -p 443 git@ssh.github.com

これで正常に接続できた場合、443portを使って接続するように設定ファイルを作成します。

# touch ~/.ssh/config
# vi ~/.ssh/config

configには以下設定を書きます。

Host github.com
    User git
    Hostname ssh.github.com
    Port 443
    IdentityFile ~/.ssh/id_rsa

これで接続ができるようになります。

Githubは公式に色々な解決法があるので見ておくといいかもしれないですね。