63 lines
1.3 KiB
Markdown
63 lines
1.3 KiB
Markdown
|
# create a git user
|
||
|
|
||
|
on debian, `sudo adduser git`
|
||
|
|
||
|
switch to git user with `sudo su git`
|
||
|
|
||
|
create a `.ssh` dir in the git user's home dir and make it only accessible by the git user
|
||
|
|
||
|
```
|
||
|
cd ~ && 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 dsa
|
||
|
```
|
||
|
|
||
|
and finally copy it to 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
|
||
|
```
|
||
|
|