GitHubとのSSH接続設定 - graspPlugin/wiki GitHub Wiki

はじめに

昨年GitHubはパスワード認証を廃止しました.そのためそのままではコマンドライン上でcloneやpushなどを行うことができません.

このページではSSH接続の設定を行い,GitHub上のリポジトリを扱える様にします.

接続手順

鍵の生成

SSHは鍵認証と呼ばれるものの一つで,自分は秘密鍵を,相手側は公開鍵を持っている必要があります.秘密鍵が鍵本体,公開鍵が鍵穴とイメージしてもらえればわかりやすいと思います.両者が揃うことで初めてサーバーとの接続が成功します.

まずはSSHの秘密鍵と公開鍵を生成します.鍵はホームディレクトリ直下の.sshディレクトリに入れる必要があるのでない場合はディレクトリを作成します.

mkdir ~/.ssh && cd ~/.ssh

それでは鍵を作りましょう.鍵の生成はssh-keygenコマンドで行います. tオプションを使用してed25519を指定していますが,これは暗号化手法を示しています.昔はrsa方式が主流でしたが,これからはより強固でパフォーマンスに優れるed25519の時代です.こちらを使いましょう.

鍵の生成コマンドを実行します.

ssh-keygen -t ed25519

下のように保存する鍵の名前を聞かれますが,デフォルトで結構ですので何も入力せずにEnterを押します.

Generating public/private rsa key pair.
Enter file in which to save the key (/home/USERNAME/.ssh/id_ed25519):

以下のように鍵を使用する際のパスワードの入力を求められるので2回入力し最後にEnterを押すと生成が完了します.

Enter passphrase (empty for no passphrase): ### ここでパスワードを入力 ###
Enter same passphrase again: ### ここでパスワードを再度入力 ###
Your identification has been saved in /home/USERNAME/.ssh/id_ed25519.
Your public key has been saved in /home/USERNAME/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:MbVB5VaC795Ze2DxfPbcd0IUwXlsYww/sH8UhwGAUek USERNAME@PCNAME
The key's randomart image is:
+--[ED25519 256]--+
|        .=*=+=*B.|
|        ..o+ oO+*|
|        o...o..*o|
|         oE.. +..|
|        S  . . =.|
|            . + B|
|           . + *=|
|            . +.B|
|               .+|
+----[SHA256]-----+

ここで.sshディレクトリの中に自分が持っておく秘密鍵id_ed25519,相手側が持っておく公開鍵id_ed25519.pubの二つが生成されているはずです.

ls
# id_ed25519	id_ed25519.pub

これで鍵の生成は完了です.

公開鍵のGitHubへの登録

次は公開鍵をGitHub側に持たせる設定を行います. GitHubにアクセスに作成したアカウントでログインしましょう. (ここからはスクショを撮るのがめんどくさいので言葉で説明します.すみません)

ページ右上のアイコンをクリックし,下から二番目,Sign outの上のSettingsをクリックします. するとアカウントの設定ページに飛びます. 左側に設定項目が並んでいますが,Accessカテゴリ内のSSH and GPG keysをクリックします. ここで上のSSH keysの右にNew SSH keyと書かれた緑色のボタンがあるのでクリックします. Titleは任意で構いません.複数の端末からGitHubにアクセスしたいという場合は分かりやすい名前にするのがいいでしょう. Keyの部分ですが,ここには公開鍵id_ed25519.pubの中身をコピーして貼り付けます.公開鍵をエディターなどで開いて全選択からのコピーで問題ありません. 最後に下にある緑色のAdd SSH keyボタンを押して登録完了です.

いざ接続

それでは登録した鍵を使ってsshコマンドで接続を行いましょう.

ssh -T [email protected]

入力するとEnter passphrase for key 'id_ed25519' :とパスワードの入力を求められるかもしれないので,その時は鍵作成時に決めたパスワードを入力しましょう.

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

と表示されたら成功です.お疲れ様でした.