【Ubuntu20】gitをインストールしてWindowsからSSH接続する

ネコニウム研究所

PCを利用したモノづくりに関連する情報を掲載するブログ

【Ubuntu20】gitをインストールしてWindowsからSSH接続する

2022-4-15 | ,

Ubuntu20にGitをインストールして、WindowsからSSH接続しつつpushやらpullやらをしたい。

CentOS7での手順についてはこちらに掲載してます。

概要

この記事では、Ubuntu20にGitをインストールしてWindowsからSSH接続して使用する手順を掲載する。

仕様書

環境

サーバー側

  • Ubuntu 20.04 LTS
  • git version 2.25.1

クライアント側

  • Windows 10 Home Version 21H1(OS ビルド 19043.1586)
  • git version 2.23.0.windows.1

手順書

サーバー(Ubuntu)側の手順

本節は、サーバー(Ubuntu)側の手順です。

  1. Gitをインストールする
    sudo apt update
    sudo apt install git
  2. 下記のコマンドを実行して「Git」で使うgitusersグループとgituserユーザーを作る。ユーザーでsudoできるようにsudoグループに所属させる。
    groupadd gitusers
    adduser gituser
    adduser gituser gitusers
    gpasswd -a gituser sudo
  3. リポジトリを保管するディレクトリーを作成する。
    sudo mkdir -p /var/lib/git
    sudo chown -R gituser:gitusers /var/lib/git
  4. 先程作ったgituserアカウントに切り替えて、テスト用のリポジトリを作成する。例としてtest-repo.gitというリポジトリを作成する。
    su gituser
    cd /var/lib/git
    sudo mkdir test-repo.git
    cd test-repo.git
    sudo git init --bare --shared

クライアント(Windows)側の手順

本節は、クライアント(Windows)側の手順です。SSH認証のところでちょっとだけサーバー(Ubuntu)側の手順が含まれます。

Windowsに「Git Bash」をインストールしてなければ。こちらからダウンロードしてインストールしておく。

  1. 「Git Bash」を起動する。
  2. SSHの鍵ファイルを作成する。ファイル名を指定しない場合、C:\Users\<UserName>\.sshの中にid_rsa秘密鍵とid_rsa.pub公開鍵が作成される。
    ssh-keygen -t rsa
  3. サーバー(Ubuntu)側に/home/gituser/.ssh/authorized_keysを作成して、クライアント(Windows)側のid_rsa.pub公開鍵の内容をコピペする。
  4. ここからはクライアント(Windows)側の作業に戻る。C:\Program Files\Git\etc\ssh\ssh_configに下記を追記する。
    Host <HostName>
    User gituser
    HostName <サーバーのIPアドレス>
    IdentityFile ~/.ssh/id_rsa
    Port 22
    IdentitiesOnly yes
  5. リモートリポジトリ(サーバー)からテスト用のリポジトリをクローンする。下記の例では、クライアント(Windows)側のD:\repos\testrepoにクローンした結果が出力される。Linux的なパスの指定のやり方なのと、管理者権限が必要なパスにクローンするとエラーになること(管理者権限で「Git Bash」を起動するれば回避できるけどめんどい)に注意。
    git clone ssh://<HostName>:/var/lib/git/test-repo.git /d/repos/testrepo

    下記のメッセージは、「リポジトリが空だよ!」っていう警告なんだけども、今回は無視していい。

    warning: You appear to have cloned an empty repository.
  6. コマンドが正常に実行されるとD:\repos\testrepoが作成される。このフォルダの中に.gitフォルダが作成されてるか確認する。
  7. testrepoの中にREADMEファイルを作成してpushしてみる。
    cd /d/repos/testrepo
    git add README
    git commit -m 'Add README'
  8. READMEmasterブランチに追加されてるかファイルの一覧を表示して確認する。
    git ls-tree master

まとめ(感想文)

githubとかを使う前に自分のサーバーで練習してみても良いかもね!