【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とかを使う前に自分のサーバーで練習してみても良いかもね!