極楽とんぼのロボット製作記

情報工学系大学院生がロボットとその周辺技術や身の回りの出来事について紹介するブログ

GithubにSSHで接続し、リポジトリを作成する

今回はSSHを利用してGithubに接続し、リポジトリを作成します。SSH鍵の作成、Githubへの公開鍵の登録、SSHを利用してGithubへpushを行います。SSHの利点としては、httpsのようにいちいちパスワードを入力する必要が無い点ですね。

githubのアカウントは作成されている前提です。作成方法がわからない方はこちらへ
Githubのアカウント作成方法 - Qiita

鍵の作成

まずはsshの公開鍵と秘密鍵を作成します。

$ cd ~/.ssh
$ ssh-keygen -t rsa -C your.email@sample.com
Generating public/private rsa key pair.
#ssh鍵を保存するディレクトリを設定する。何も入力しなければ ~/.sshに作成される
Enter file in which to save the key (/home/tombo/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):    #パスフレーズの入力
Enter same passphrase again:    #パスフレーズの再入力
Your identification has been saved in /home/username/.ssh/id_rsa.
Your public key has been saved in /home/username/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:.... your.email@gmail.com
The key's randomart image is:
+---[RSA 2048]----+
| ....|
+----[SHA256]-----+

id_rsaが秘密鍵、id_rsa.pubが公開鍵です。
公開鍵暗号については下記が参考になります。
公開鍵暗号方式

秘密鍵のパーミッションをユーザのみが読み書きできるように変更しましょう。

$ chmod 600 id_rsa

さらに~/.ssh/configにgithubに接続する際の設定を登録しておきましょう。こうすることで、接続する際の設定をまとめて行うことができます。
ssh configに関しては下記記事が参考になります。
~/.ssh/configについて - Qiita

$ vim ~/.ssh/config
Host github.com
Hostname github.com
Identityfile ~/.ssh/id_rsa
User git

githubに公開鍵を登録

githubに公開鍵を設定します。

$ cat ~/.ssh/id_rsa.pub

と入力し、出力内容をコピーしておきます。

下記にアクセスして公開鍵の登録をします。
Sign in to GitHub · GitHub
またはアイコンをクリックして、Settingsを選択し、SSH and GPG keysを選択してください。
f:id:gokuraku104robot:20170903173435p:plainf:id:gokuraku104robot:20170903173432p:plain

New SSH keyをクリックして、TitleとKeyを入力します。
Title: id_rsa.github.com.pub
Key: 先ほどcatしたもの
入力後、Add SSH keyをクリックして公開鍵を登録します。

試しにgithubにsshしてみましょう。

$ ssh -T git@github.com

ここで

The authenticity of host 'github.com (192.30.255.113)' can't be established.
RSA key fingerprint is <フィンガープリント>.

とでる場合、下記記事が参考になります。
GitHubに入門(その1) - Qiita
対応策としては

$ eval `ssh-agent`
Agent pid 22222
$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/username/.ssh/id_rsa: 
Identity added: /home/username/.ssh/id_rsa (/home/username/.ssh/id_rsa)
$ ssh -T git@github.com
Hi username! You've successfully authenticated, but GitHub does not provide shell access.

を実行します。

さらに、

Warning: Permanently added the RSA host key for IP address '192.30.255.112' to the list of known hosts.

が出る場合は下記記事が参考になります。
SSH接続でgit pushしたときに警告が出るやつへの対処法 - Qiita
この場合は

$ ssh-keygen -R 192.30.255.112

を実行します。

githubにリポジトリを作成する

githubにアクセスし、ユーザーアイコンの隣の+▼をクリックし、New repositoryを選択します。
f:id:gokuraku104robot:20170903175306p:plain

リポジトリ名を入力してCreate repositoryをクリックします。
Repository name: testrepos
Description: test repository
f:id:gokuraku104robot:20170903175302p:plain:w500

次に表示される画面でgithubから新しいリポジトリの作成方法が案内されます。至れり尽くせりですね。
f:id:gokuraku104robot:20170903180204p:plain
今回はSSHで接続するのでSSHをクリックします。基本的には案内通りでできますが、ここまでの流れで、まだディレクトリやファイルを作成していないので、作成します。

$ mkdir ~/testrepos
$ cd ~/testrepos
$ touch README.md

ここからはgithubの案内と同様です。

$ git init
$ git add .  #README.mdでも可
$ git commit -m "first commit"
$ git remote add origin git@github.com:username/testrepos.git
$ git push origin master

これで晴れてsshからgithubへpushすることができました。

参考サイト
qiita.com
Githubのアカウント作成方法 - Qiita
公開鍵暗号方式
~/.ssh/configについて - Qiita
GitHubに入門(その1) - Qiita
SSH接続でgit pushしたときに警告が出るやつへの対処法 - Qiita