From 0ba0d1197f1db73b82a71bda1b8b1c0b57d787ae Mon Sep 17 00:00:00 2001 From: ktyl Date: Sat, 16 Apr 2022 19:53:15 +0100 Subject: [PATCH] add minimal git server blog --- blogs/git/git-server.md | 62 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 blogs/git/git-server.md diff --git a/blogs/git/git-server.md b/blogs/git/git-server.md new file mode 100644 index 0000000..db68fb4 --- /dev/null +++ b/blogs/git/git-server.md @@ -0,0 +1,62 @@ +# create a git user + +on debian, `sudo adduser git` + +switch to git user with `sudo su -l git` + +create a `.ssh` dir in the git user's home dir and make it only accessible by the git user + +``` +mkdir ~/.ssh +chmod 700 ~/.ssh +``` + +create an `authorized_keys` file in the `.ssh` folder, and make it accessible only by the git user + +``` +touch .ssh/authorized_keys +chmod 600 `.ssh/authorized_keys` +``` + +create a private/public key pair locally to authenticate a user on a machine to connect to the remote server + +``` +ssh-keygen -t rsa +``` + +and finally copy it into the (remote) git user's `.ssh/authorized_keys`, for example using `ssh-copy-id` or giving the public key to the server administrator. + +# creating bare git repositories + +create directories within git's home dir (nested paths are allowed) with the `.git` extension, for example `my-projects/my-repo.git` or just `my-repo.git`. + +``` +git init --bare repo.git +``` + +there now exists an empty git repository on the server. + +the remote can now be added to a local repository + +``` +git remote add origin git@server:my-repo.git +git push -u origin main +``` + +# connecting using the key + +add an entry to your local `.ssh/config` + +``` +Host myhost + HostName example.com + User git + IdentityFile ~/.ssh/id_rsa +``` + +and connect with + +``` +ssh myhost +``` +