SSHキーを作成してGitHubに登録する
最終更新:2023年1月20日 PowerShellコマンド追加 sshのconfigのパス解釈は保留
このドキュメントは、
自分のSSHキーをGitHubに登録してください。
って言われてもさっぱりわからねぇよ、という方向けです。
このドキュメントでは、SSHキーペアの作成からコマンド入力によるGitHubプライベートリポジトリのクローンまでを、ステップバイステップで説明します。
「SSHってなんだ!?」という方は、様々な良いページがあると思いますけれど、作業を進めるだけなら特に気にしなくてもOKです。
前準備
- GitHubに適当なプライベートリポジトリを作成して初期化してください。
**「…?」**という方は、
GitHubプライベートリポジトリの作成手順
に従って準備してください。 -
【ぜんぶポータブル】環境の方は、ポータブル環境フォルダの
Console_○○○
を開くか、VSCode上の統合ターミナルから操作してください。 注:現在公開準備中です - それ以外の環境の方は、各プラットフォーム版Gitをインストールし、Windowsはコマンドプロンプト(
Windows
キー+R
キー、「名前」欄にcmd
と入力してEnter
キー)、Macはターミナル(Finderを開いて「移動」メニューから「ユーティリティ」→「ターミナル」)、Linux系は何らかのコマンドコンソール(例えば「ラズベリーボタン」→「アクセサリ」→「LXTerminal」)を開いておいてください。
SSH系の下準備
以下のコマンドを叩いてください。
ssh -T git@github.com
以下の様なメッセージが出てきたら、明確にyes
と入力してEnter
キーを押してください。
The authenticity of host 'github.com (192.30.255.113)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)?
最終的にはエラーが出て終わりですが、下準備としてはOKです。
The authenticity of host 'github.com (192.30.255.113)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,192.30.255.113' (RSA) to the list of known hosts.
git@github.com: Permission denied (publickey).
自動的に.ssh
フォルダが作成されていると思いますので、そこに移動しておきます。
cd .ssh
No such file or directory
と怒られたら(Macのポータブル環境とか)、
mkdir .ssh
を叩いてからcd .ssh
してください。
SSHキーの作成
SSHで使用する公開鍵と秘密鍵のキーペアを作成します。
このうち秘密鍵(生成されたキーファイルのうち.pubの付いていない方)は大変大事なファイルですので流出しないように注意してください。
既に持っている方も、ポータブル環境で利用する方はデバイス紛失のリスクに備え、専用キーペアの使用を強くお勧めします。
下記のコマンド中、-C
右の" "
の中身は、自分の電子メールアドレスを入力してください。
また、コマンド一番右側rsa_GitHub
の部分は、好きな名前で結構です。
ただし、空白を含んだり全角文字を含んだりすると大抵痛い目にあいますので、ファイル名は必ず半角文字&有効な記号で指定してください。
ssh-keygen -t rsa -b 4096 -C "myname@my.email.ad.jp" -f rsa_GitHub
すると、以下の様なメッセージが出ますので、このキーに設定するパスフレーズ(いわゆるパスワードです)を入力してください。
ちなみに、画面上に入力した文字は表示されませんがちゃんと入力されています。
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
入力してEnter
キーを押すと、もう一度聞かれますので、同じパスフレーズを入力します。
Enter same passphrase again:
間違えたら再入力を要求されますので、何とかしてください。
Your identification has been saved in rsa_GitHub.
Your public key has been saved in rsa_GitHub.
The key fingerprint is:
SHA256:~~~~~~ myname@my.email.ad.jp
The key's randomart image is:
+---[RSA 4096]----+
| ステキなアート |
+----[SHA256]-----+
こんな感じで表示されればOKです。
この公開鍵ファイルの中身をあとでGitHubのサイトへ貼り付けますので、クリップボードにコピーしておきます。
clip < rsa_GitHub.pub
Get-Content rsa_GitHub.pub | Set-Clipboard
pbcopy < rsa_GitHub.pub
xsel -bi < rsa_GitHub.pub
(Linuxのxsel
で怒られた方はsudo apt install xsel
とかなんとかしてください)
SSH公開鍵をGitHubに登録する
GitHubにアクセスします。
一番右上から2番目Sign in
をクリックします。
ユーザ名とパスワードを入力してSign in
をクリックします。
画面右上のGravatarをクリックしてメニューを開き、Settings
を選択します。
サイドバーのSSH and GPG Keys
を選択して、右上の方のNew SSH key
ボタンを押して、
Title
には、複数のキーを登録した時に自分で区別が付けられるような名前を入力し、Key
欄をクリックして選択してからCtrl
+V
(MacはCommand
+V
)で貼り付け、Add SSH key
ボタンを押します。
パスワードを聞かれたら(鍵生成時に入力したパスフレーズではなく)GitHubアカウントのパスワードを入力してConfirm password
ボタンを押して完了です。
これでGitHubにSSH接続するためのキーを登録することが出来ました。1
SSHのアクセスチェック
ssh -T git@github.com -i rsa_GitHub
もしも以下の様なメッセージが出たら、明確にyes
と答えてEnter
キーです。
下準備したので大抵出ないはず。
The authenticity of host 'github.com (192.30.255.112)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)?
(Enterキーではなく、「yes」としっかり入力する)
Warning: Permanently added 'github.com,192.30.255.112' (RSA) to the list of known hosts.
以下の様にパスフレーズを要求されますので、(鍵生成時に入力したものを)入力してEnter
キーです。例によって入力しても画面には表示されません。
Enter passphrase for key 'rsa_GitHub':
間違って居たら再度聞かれます。正しいパスフレーズを入力すると、
Hi jtana! You've successfully authenticated, but GitHub does not provide shell access.
みたいに、You've successfully authenticated
って言われたら、ここまでの手順はOKです。
Gitの設定をする
GitHubでは、コミット(ファイルの登録)にサインオフ(署名)することが推奨されています。
そのためのユーザ名とパスワードを設定します。
もちろん" "
の中身は自分のものに変更して入力します。
また、Git内部でも前の手順で試したSSHコマンドを使うようにします。2
git config --global user.name "Taro Yamada"
git config --global user.email "myname@my.email.ad.jp"
git config --global core.sshCommand "ssh -T -i ~/.ssh/rsa_GitHub"
エラーも何も表示されなければ成功です。
ホームディレクトリに.gitconfig
ファイルが自動的に作成されます。
パスの指定はWindowsでもこれで合ってます。
試しにクローンする
とりあえずホームディレクトリに戻ります。もしくは、お好みのフォルダにcd
してください。
cd ..
では実際にGitHubプライベートリポジトリにあるファイルを持ってきましょう。
GitHubプライベートリポジトリの作成手順最終盤の手順を参考に、
Clone with SSH
に表示されたアドレスを、
「クリップボードに左矢印」ボタンを押してクリップボードにコピーします。
以下のコマンド入力の末尾、git clone
以降は、Ctrl
+V
(MacはCommand
+V
)で貼り付けます。
下の通り打っても僕のプライベートリポジトリですのでアクセスできません…
git clone git@github.com:jtana/sandbox.git #最後の部分はペーストね
パスフレーズを聞かれますので入力します。
Cloning into 'sandbox'...
Enter passphrase for key '~~~~/.ssh/rsa_GitHub':
done.``done.
言われたらOKです。
remote: Enumerating objects: 13, done.
remote: Counting objects: 100% (13/13), done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 13 (delta 2), reused 10 (delta 2), pack-reused 0
Receiving objects: 100% (13/13), done.
Resolving deltas: 100% (2/2), done.
これで、ホームディレクトリにリポジトリと同じ名前のフォルダが作成され、中にファイルが入っているはずです。実際にファイルを持ってこれたかどうか、WindowsエクスプローラーなりMacのFinderなりLinuxのファイルマネージャーなりで確認し、不要であればこのフォルダを削除してください。
以上です、お疲れ様でした。