---
# System prepended metadata

title: SSHとGit/GitHubの環境構築と使い方

---

# SSHとGit/GitHubの環境構築と使い方

## Git/GitHub環境構築

Gitとはファイルに発生したすべての変更を記録し、タイムマシンのように過去のある時点のバージョンに遡ることができるようにしてくれるツールです。

Gitをインストールするためのコマンドは以下のようになります。

```bash
# WSLの場合
$ sudo apt install git

# Macの場合
% brew install git
```

また、利用するためにはユーザの設定を行う必要があります

```bash
$ git config --global user.name "<ユーザ名>"
$ git config --global user.email "<メールアドレス>"

# (例) git config --global user.name "fumiya"
# (例) git config --global user.email "s19t325@stu.kagawa-u.ac.jp"
```
設定したユーザ名を確認際は、以下のコマンドを打ちます

```bash
$ git config --global user.name
fumiya
$ git config --global user.email
s19t325@stu.kagawa-u.ac.jp
```

次に、GitHubのアカウント作成を行います。
GitHubとはGitを利用してソフトウェア開発のソースコードを管理、共有することできるサービスです。

[GitHubアカウント登録方法](https://kimama-engineer.com/git/github/how-to-create-a-github-account/)

また、GitHubが公開鍵認証をするために、公開鍵・秘密鍵の生成、登録を行います。
認証方式には、パスワード方式、公開鍵認証方式があり、今回、認証の安全性を高めるため、公開鍵認証方式を採用します。

![](https://i.imgur.com/F1Gbcas.gif)

公開鍵・秘密鍵を生成するコマンドは以下となります。

```bash
$ ssh-keygen -t rsa -b 2048 -f ~/.ssh/KAGINONAMAE -C "COMMENT"
```

次に、生成した公開鍵をGitHubに登録します。

![](https://i.imgur.com/pzANgLC.png)

以下のように~/.ssh/id_ed25519.pubファイルの中身を表示し、上の画像のKeyの欄にコピペします。その後、Add keyボタンを押し、公開鍵を登録します。
```bash=
# KAGINONAMAE HA -f OPTION NO MOZIRETSU NI YORU.
# HYOUZYUN DEHA id_rsa
$ cat ~/.ssh/KAGINONAMAE.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDbJMMQwgF6bpUicVwTx72Pck8xbXc0GRqiLF+NxnBCXNcg0unVYaHYgUrxHWc29q77CuzZA5NuuydEUe6kkxCtcmH9Thl/DKzi9oJqCfF/Uhme+wVhJYzOJbFDijvlZpjsj/LmLv8Wreeg9nVGOpanSILnU31k74SJleMVErg/BxzVeoGOPJ8CC9ROWRAw5uoU/oml/S+XVaUf3HR7wtvZ6yApgRbjrAR16a+42dyBfp5EPXUEhAR3c99WnP7XgHeurZA6dxGFQOGf7gFtu8WEtyjdZWlFnwkkXZ1guycW6TebqixNxYwE9/g0Iv+epJPUyAauihjfOzp8fd3Gd8ZF+EOltdMmR5B+AmOKZjUzDLOKM30qO6tfXGB5VO9IsG+xn5hQVKGLUmF2Z9RHt9tDGpISHlxgN9aqn/piXzfUup3O4BNe/Cq7dtX3dwIkoyBTa2nEaNkuRa2OSjqTn/doK2Gz2l9UhPwpWzjc1m6UkQ1qyi9h5A7Avoy57s/iUlk= higuruchi@higuruchi-CFSV7-3L
```
公開鍵認証方式での接続を確かめるため、以下のコマンドを入力します。

```bash=
$ ssh -T -i ~/.ssh/KAGINONAMAE git@github.com
Hi (account名)! You've successfully authenticated, but GitHub does not provide shell access.
```


## SSHについて

SSHとは、ネットワークに接続された機器を遠隔操作し、管理するための手段です。
同じように、telnetを用いてもネットワークにつながった機器を遠隔操作することができますが、通信内容が暗号化されていないため、パスワードなどが漏れ出す可能性があります。

認証をパスワード方式から公開鍵認証方式に変更します。
~~公開鍵をサーバ側に送るために以下のコマンドを入力します~~

```bash=
$ cat ~/.ssh/鍵の名前.pub
# 出たのをコピー
```

ssh接続するためのコマンドは以下のようになります

```bash=
＄ssh <ユーザ名>＠<ホスト名>
```

その後、パスワードを入力します。
パスワードを入力する際、ターミナルには入力した文字列が表示されません。


次に鍵の登録をします。

```bash=
$　cat >> ~/.ssh/authorized_keys
# 貼り付け
# 改行して Ctrl+D
```

上記の方法がうまく行かない場合は、以下の方法を使う。

```bash=
$ ssh-copy-id -i ~/.ssh/id_rsa.pub <ユーザ名>＠<ホスト名>
# e.g. $ ssh-copy-id -i ~/.ssh/id_rsa_poulenc.pub@poulenc.eng.kagawa-u.ac.jp
```
これで鍵の登録が完了しました。
公開鍵認証方式でSSH接続をするために、秘密鍵を指定するオプションを付け、sshコマンドを使用します
```bash
ssh -i ~/.ssh/poulenc user@poulenc.eng.kagawa-u.ac.jp
```

また、sshコマンドを使用するたびに秘密鍵の指定をするのはするのは、少し面倒くさいように思われます。そこで、設定ファイルをかき、ユーザ名、ホスト名、秘密鍵などの指定を省略します。

まず、~/.ssh以下にconfigファイルを生成してください

```bash=
cd ~/.ssh
touch config
```

configファイルを作ることができたら、VSCode、メモ帳などで以下の設定をconfigファイルに記述してください

```bash=
# 基本的な記述方法
Host <接続するための別名>
HostName <ホスト名>
IdentityFile <秘密鍵のパス>
User <ユーザ>

# 例
Host github.com
HostName github.com
IdentityFile ~/.ssh/id_rsa_github
User git

# 例
Host poulenc
HostName poulenc.eng.kagawa-u.ac.jp
IdentityFile ~/.ssh/id_rsa_poulenc
User fumiya
```

## git/GitHubの使い方

![](https://i.imgur.com/cIrKqkw.png)

![](https://i.imgur.com/UVsPSa0.png)

![](https://i.imgur.com/TJSTxSV.png)

![](https://i.imgur.com/us2TdSp.png)


```bash=
$ git clone git@github.com:higuruchi/hello.git
.git
Cloning into 'hello'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.
$ cd hello
$ touch index.html
$ echo "hello world" > index.html
$ git status
ブランチ main
Your branch is up to date with 'origin/main'.

追跡されていないファイル:
  (use "git add <file>..." to include in what will be committed)
	index.html

nothing added to commit but untracked files present (use "git add" to track)
$ git add index.html
$ git commit -m "add index.html"
[main 95a31c9] add index.html
 1 file changed, 1 insertion(+)
 create mode 100644 index.html
$ git push origin main
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 291 bytes | 291.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To github.com:higuruchi/hello.git
   329cac0..95a31c9  main -> main![](https://i.imgur.com/N7FD1QF.png)

```
