🔰
local環境でgitサーバーの練習をしてみた
はじめに
パソコン内に閉じた環境でgitサーバー(sshサーバー)でコードを管理できる環境を作ります
実用性は低いですが、gitの練習がてらやったときのメモをまとめてみました
環境
・host環境: docker, ubuntu:22.04
・client環境: mac
・カレントディレクトリ: "/Users/pycetra/projects/20300101_git_repo"
・terminalはclient側(mac上)しか扱いません。(loginとexitを繰り返すとわかりにくくなるため)
ディレクトリ構成
/Users/pycetra/projects/20300101_git_repo/
.
↑実行前の空のディレクトリ
↓"すべてのコマンド"を実行後のディレクトリ
/Users/pycetra/projects/20300101_git_repo/
├── remote_repo <- "step3: contanerの作成と起動"で作られるdockerのremote repository
│ └── repo1.git
├── remote_ssh <- "step3: contanerの作成と起動"で作られるdockerに登録される公開鍵
│ └── id_rsa_docker_git_repo.pub
└── repo1_download <- "verify: git clone"でcloneされるrepository
└── .git
すべてのコマンド
step1~6+verifyをつなげたもの
"step5: sshの設定"は手動の編集を想定
(いくつかインタラクティブに入力を求められるので1つ1つ実行すると安定するかも)
export GIT_REPO_HOME=/Users/pycetra/projects/20300101_git_repo
docker pull ubuntu:22.04
docker run --detach \
--hostname localhost \
--publish 2022:22 \
--name pycetra_repository \
-v $GIT_REPO_HOME/remote_ssh:/root/.ssh/ \
-v $GIT_REPO_HOME/remote_repo:/pycetra/ \
-it ubuntu:22.04 /bin/bash
ssh-keygen -f $GIT_REPO_HOME/remote_ssh/id_rsa_docker_git_repo
mv $GIT_REPO_HOME/remote_ssh/id_rsa_docker_git_repo ~/.ssh/
mv $GIT_REPO_HOME/remote_ssh/id_rsa_docker_git_repo.pub $GIT_REPO_HOME/remote_ssh/authorized_keys
docker exec pycetra_repository apt update
docker exec pycetra_repository apt install -y openssh-server
docker exec pycetra_repository sh -c "echo 'root:root' | chpasswd" # パイプが入っているのでshオプションで実行
docker exec pycetra_repository sed -ri 's/^#?PermitRootLogin\s+.*/PermitRootLogin yes/' /etc/ssh/sshd_config
docker exec pycetra_repository sed -i 's/^#PubkeyAuthentication yes/PubkeyAuthentication yes/g' /etc/ssh/sshd_config
docker exec pycetra_repository service ssh start
docker exec pycetra_repository apt-get install -y git
docker exec pycetra_repository mkdir /pycetra
docker exec pycetra_repository git init --bare /pycetra/repo1.git
git clone root@localhost:/pycetra/repo1.git
解説
step1: ホームディレクトリの設定
export GIT_REPO_HOME=/Users/pycetra/projects/20300101_git_repo
step2: imageのdownload
docker pull ubuntu:22.04
step3: contanerの作成と起動
docker run --detach \
--hostname localhost \
--publish 2022:22 \
--name pycetra_repository \
-v $GIT_REPO_HOME/remote_ssh:/root/.ssh/ \
-v $GIT_REPO_HOME/remote_repo:/pycetra/ \
-it ubuntu:22.04 /bin/bash
step4: contanerの作成と起動
ssh-keygen -f $GIT_REPO_HOME/remote_ssh/id_rsa_docker_git_repo
mv $GIT_REPO_HOME/remote_ssh/id_rsa_docker_git_repo ~/.ssh/
mv $GIT_REPO_HOME/remote_ssh/id_rsa_docker_git_repo.pub $GIT_REPO_HOME/remote_ssh/authorized_keys
step5: sshの設定
~/.ssh/config へ以下を追記する
Host localhost
HostName localhost
User root
port 2022
IdentityFile ~/.ssh/id_rsa_docker_git_repo
TCPKeepAlive yes
IdentitiesOnly yes
step6: openssh-serverとgitの設定
docker exec pycetra_repository apt update
docker exec pycetra_repository apt install -y openssh-server
docker exec pycetra_repository sh -c "echo 'root:root' | chpasswd" # パイプが入っているのでshオプションで実行
docker exec pycetra_repository sed -ri 's/^#?PermitRootLogin\s+.*/PermitRootLogin yes/' /etc/ssh/sshd_config
docker exec pycetra_repository sed -i 's/^#PubkeyAuthentication yes/PubkeyAuthentication yes/g' /etc/ssh/sshd_config
docker exec pycetra_repository service ssh start
docker exec pycetra_repository apt-get install -y git
docker exec pycetra_repository mkdir /pycetra
docker exec pycetra_repository git init --bare /pycetra/repo1.git
verify: git clone
git clone root@localhost:/pycetra/repo1.git $GIT_REPO_HOME/repo1_download
実行後にclient環境にrepo1フォルダが作られていることを確認できる
Discussion