Address
304 North Cardinal St.
Dorchester Center, MA 02124
Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM
Address
304 North Cardinal St.
Dorchester Center, MA 02124
Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM
今回の記事ではGithubの初心者に向けて、プライベートリポジトリを作って、それにSSH接続する方法をわかりやすく解説します。
ネット上ではLinuxやMacでの作業手順の説明が多いですが、今回はWindows10ユーザーに向けての解説となります。
Contents
これらは終わらせておいてください。また今回の記事ではGitやGithubがどのようなものかなどは説明しません。
今回の作業の大まかな流れは次のとおりです。
今回は上述のとおり以下の条件で作業を行います。
Windows版GitにはGit CMD(Windowsのコマンドプロンプトに慣れている人向け)もありますが、今回はGit Bash(Macを含むLinux系になれている人向け)を使います。
基本的にWEB系とかサーバー関係はUnix系かMacを含むLinux系の環境において作業することが多いので、ネットなどの解説でもその環境向けの説明が多いです。
したがって、Windowsのコマンドプロンプトを使うGit CMDではなく、Macを含むLinux系の操作に従うGit Bashを使います。
Git Bashの画面がこちらです。
まずGithubの自分のアカウントのホームへ。
そして矢印①でリポジトリの名前を好きなようにつけて入力しましょう。今回は「Django_on_AWS」としました。
矢印②では「Private」に設定。今回は個人的な練習目的なので公開する必要もないですし。
矢印③で「Creat a new repository」を押して、新規リポジトリを作成します。
.gitignoreファイルを作成すると、公開すべきでないファイルを除外するよう自動的に設定されます。いわばGitによる管理から外すファイルを設定できるわけです。うっかり情報を漏洩することを回避しやすくなるわけですね。
今回はたとえばPythonファイルをGitの管理から除外することを例にします。その手順は以下の通りです。
このページの丸印のところに項目「 .gitignore」があります。それをクリックします。
入力欄がありますので「python」と入力します。途中まで入力すると候補が出てきます。
最後にページ一番下にあるボタン「creat a new repository」を押して変更を保存します。
こうして.gitignoreを作成できました。
Github公式:SSH を使用した GitHub への接続
基本的にはこの公式ページにある通りにすすめていくだけです。
まずSSH接続するための鍵を保存するフォルダ(ディレクトリ)をパソコンに作りましょう。すでにあれば作る必要はありません。
そのフォルダの名前ですが、基本的には、
.ssh
という名前にします。そのようなフォルダがなければ作りましょう。
場所はどこでもいいと思いますが、
というように作るのが無難だと思います。
Windowsのエクスプローラーの画面がこちらです。
このように、「Cドライブ>Users(ユーザー)>hogehoge>.ssh」というように作りたいわけです。
さてGit Bashを開くと次の画面となりますが、
ここではウインドウ最上部に「/c/Users/hogehoge」とあります。このhogehogeはみなさんのWindowsマシンを購入したときに最初に登録したユーザー名(アカウント名)です。Cドライブの中にUsersフォルダ(”ユーザー”というフォルダ)があって、その中にhogehogeのフォルダがあることになります。
このようにウインドウ最上部に表示されている場所が、Git Bash上での作業の基準となる場所(フォルダ)です。自分がどのフォルダを基準にしているのかわからなくなったら、その部分を見て確かめましょう。
そのhogehogeフォルダの中に、「.ssh」という名前のフォルダがあればそれでOKです。なければ作りましょう。「.ssh」の「.」を忘れずに。ピリオド+sshという文字です。
その.sshフォルダを作るには、Git Bash起動させた後に、
$ mkdir .ssh
と書いてリターンキーを押せば、簡単に作成できます。
今回は「/c/Users/hogehoge」の下、つまりhogehogeフォルダの中に.sshというフォルダができあがります。
このようにhogehogeフォルダの中に「.sshという名前のフォルダ」を作るのが最も楽でしょうし、普通はそれで十分だと思います。
今回はまさにその場所に.sshフォルダを作ったとします。
次にGit Bash上でその.sshフォルダへ移動します。この手順を忘れないようにしましょう。以下のコマンドを入力します。
$ cd ~/.ssh
このように入力して、決定(エンターキー)を押すと作業するフォルダ(ディレクトリ)が 「Cドライブ>Users(ユーザー)>ユーザー名>.sshフォルダ」へと移動します。ウインドウ最上部で基準となった場所を再確認してください。
次にSSH鍵を作成します。以下のコマンドを入力します。
$ ssh-keygen -t ed25519 -C "Githubに登録しているメールアドレス"
(入力例:$ ssh-keygen -t ed25519 -C "ageage@gggg.com")
ここで、
Enter a file in which to save the key (/c/Users/hogehoge/.ssh/id_~):[Press enter]
と出たら、エンターキーを押してください。今のGit Bash上の作業フォルダ(この記事の設定だと、/c/Users/hogehoge/.ssh/)に保存されます。その保存場所を変更したいなら、保存場所へのパスを入力しましょう。
そして、パスフレーズの入力へ移ります。
Enter passphrase(Empty for no passphrase)
というメッセージが現れますので、passphrase(パスフレーズ)を入力します。パスフレーズを設定しなくても使えるようですが、セキュリティも高まりますし、練習がてら(?)設定しておいたほうが良いでしょう。
パスフレーズはなんでもいいです。無難に半角英数字で10~30文字のランダムなものをテキトーに入力します。メモ帳にでも書いてから、それを見ながら入力すると良いでしょう。このパスフレームはいろいろな作業で使うことになりますので保存しておきましょう。
(なおパスフレーズは後で追加・変更できます。参照:Github公式:SSH キーのパスフレーズを使う)
いったん入力すると、
Enter same passphrase again
と表示されるので、確認のため同じパスフレーズを入力します。
間違えると次のように再びパスフレーズを入力するよう言われます。
Passphrases do not match. Try again
正しく入力できるまで頑張りましょう。
このような画面になれば成功です。
SSH鍵のファイルが出来上がっているか確認しましょう。
$ ls -al ~/.ssh
と入力します。
このように新規作成されたファイルの名前や作成日時などが表示されるはずです。
ssh-agentというSSH鍵をいい具合に管理してくれるプログラムがあります。まずそれを起動させます。
$ eval "$(ssh-agent -s)"
起動すると、
Agent pid 数字
と表示されます。
続いて、それにSSH鍵の情報(今回だとid_ed25519というファイル)を渡します。
$ ssh-add ~/.ssh/id_ed25519
確認します。
$ ssh-add -l
こんな感じで、ランダムな英数字記号が表示されると思います。
このssh-agentですが、実はGit Bashを終了させると毎回設定がリセットされます。つまりGit Bashを起動させるたびに毎回ssh-agentを起動して鍵を渡すという作業が必要になります。
そこでGit Bashを起動させると同時にssh-agentも起動できるよう設定することができます。
公式ドキュメントでは、まさに「Git for Windows で ssh-agent を自動的に起動する」という項目があります。その内容をそのままやるだけです。
その公式ドキュメントでは、
bash または Git シェルを開いたときに、
ssh-agent
を自動的に実行できます。 次の行をコピーし、Git シェルの~/.profile
または~/.bashrc
ファイルに貼り付けます。
と書いてあるのですが、普通のWindowsでは、「.profile」「.bashrc」というファイルは存在しないことが多いのではないでしょうか。
ない場合は作ります。VS Codeなどのエディタで新規ファイル(中身は当然からっぽ)を開き、次のコードをそのままコピペします。上のMS公式ドキュメントに掲載されているものです。
env=~/.ssh/agent.env
agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }
agent_start () {
(umask 077; ssh-agent >| "$env")
. "$env" >| /dev/null ; }
agent_load_env
# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2=agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)
if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
agent_start
ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
ssh-add
fi
unset env
次にそのファイルを名前をつけて保存するわけですが、名前は、
のどちらでも動くのは動きます。
しかし、.bahsrcにした場合は改めてGit Bashを起動させたときに、以下の警告メッセージが出る可能性があります。
WARNING: Found ~/.bashrc but no ~/.bash_profile, ~/.bash_login or ~/.profile.
This looks like an incorrect setup.
これが心配ならば、.bashrcではなく、.profileというファイル名にして保存しましょう。保存する場所ですが、いわゆるホームディレクトリです。.sshフォルダではないので注意してください。
今回の記事の場合ならば、Windowsパソコンのユーザー名(アカウント名)であるhogehogeフォルダ(c/Users/hogehoge)の中に置きます。上の画像にhogehogeフォルダがありますが、その中に置きます。
では改めてGit Bashを起動させてください。
きちんと起動すれば、上述のssh-agentの鍵情報を登録したときと同じように、
$ ls -al ~/.ssh
とでも入力してみてください。
同じように表示されると思います。
最後に、Githubアカウントに公開鍵の情報を登録して終了となります。
まずGit Bashに次のコマンドを入力します。
$ clip < ~/.ssh/id_ed25519.pub
これは、公開鍵のファイル「id_ed25519.pub」(pub:public、公開)の中身をクリップボードにコピーするものです。
もしクリップボードにコピーできていなければ、VS Codeなどのエディタでid_ed25519.pubを開いて中身を全部コピーしましょう。
次にGithubの自分のアカウントにアクセスしまして、「setteing」項目へ。
次に「SSH and GPG keys」項目へ。
「SSH Keys」の項目に、ボタン「New SSH Key」があるのでクリック。
次に下画像のように、クリップボードの中身を項目「Key」欄に貼り付けましょう。
Title欄にはテキトーにわかりやすい名前を、項目「key」欄にはクリップボードにコピーしてる公開鍵情報をそのままペーストします。
最後にボタン「Add SSH key」を押します。
このように追加した鍵情報が表示されれば成功です。
ではGit Bashにもどり、きちんと接続できるか試してみます。次のコマンドを入力します。
$ ssh -T git@github.com
次のようなメッセージが出ればOKです。
Hi 1978works! You've successfully authenticated, but GitHub does not provide shell access.
続いて、今回作ったプライベートリポジトリ「Django_on_AWS」をクローン(自分が使ってるPCにデータを複製する)してみましょう。
リポジトリ一覧から「Django_on_AWS」を選び、ボタン「<>Code」(上画像の緑色のボタン)をクリックします。
そして「SSH」選んでから、二重□のアイコンをクリックしてアドレスをコピーします。
そのアドレスを使い、Git Bash上で次のように入力。
$ git clone git@github.com:1978works/Django_on_AWS.git
こんな表示がされれば成功です。
これでGithubへのSSH接続の手順の説明は以上です。お疲れ様でした。