1. generare chiavi ssh

Ogni utente che ha bisogno di accedere al server git dovrebbe creare una coppia di chiavi ssh.
Ogni utente può controllare se ha già una chiave ssh o altrimenti deve generarla.

1
2
3
4
5
6
7
8
$ cd ~/.ssh
$ ls
authorized_keys2
id_dsa
known_hosts
config

id_dsa.pub

se c’è nella cartella .ssh  una coppia di chiavi tipo id_dsa id_dsa.pub vuol dire che hai gia una coppia di chiavi alrtimenti devi generarle con il comando

1
2
3
4
5
6
7
$ ssh-keygen

Generating public/private rsa key pair. Enter file in which to save the key (/Users/schacon/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in yourhome/.ssh/id_rsa. Your public key has been saved in yourhome/.ssh/id_rsa.pub.
The key fingerprint is: 43:c5:5b:5f:b1:f1:50:43:ad:20:a6:92:6a:1f:9a:3a username@yourcomputer.local

2. inviare all’amministratore la chiave ssh pubblica

quello che gli utenti devono inviare all’amministratore del server è il testo all’interno del file pubblico id_rsa.pub

1
2
3
4
5
6
7
$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/BWDSU
GPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9jbhUFrviQzM7xlELEVf4h9lFX5QVkbPppSwg0cda3
Pbv7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSlVK/7XA
t3FaoJoAsncM1Q9x5+3V0Ww68/eIFmb1zuUFljQJKprrX88XypNDvjYNby6vw/Pb0rwert/En
mZ+AW4OZPnTPI89ZPmVMLuayrD2cE86Z/il8b+gw3r3+1nKatmIkjn2so1d01QraTlMqVSsbx
NrRFi9wrf+M7Q== schacon@agadorlaptop.local

4. sul server creare l’utente git

1
$ sudo adduser git

5. aggiungere le chiavi pubbliche degli utenti

1
2
3
4
$ su git
$ cd
$ mkdir .ssh
$ cat /tmp/id_rsa.john.pub >> ~/.ssh/authorized_keys

6. creare i progetti GIT “bare”

1
2
3
4
$ cd /var/git
$ mkdir progetto01
$ cd progetto01
$ git --bare init

7. push and pull dei progetti

primo invio

1
2
3
4
5
6
7
# on Johns computer
$ cd myproject
$ git init
$ git add .
$ git commit -m 'initial commit'
$ git remote add origin git@gitserver:/var/git/project01
$ git push origin master

gli altri utenti

1
2
3
4
5
$ git clone git@gitserver:/var/git/project01
$ cd project
$ vim README
$ git commit -am 'fix for the README file'
$ git push origin master

Se c’è qualche errore di connessione e di autorizzazione probabilmente è dovuto alle chiavi ssh non definite per quell’utente e per quel server.

per ovviare a ciò è possibile configurare ssh scrivendo nel file

1
~/.ssh/config
1
2
3
4
Host ipdelserver
    Hostname ipdelserver
    User git
    IdentityFile ~/.ssh/latuachiave

sostituisci opportunamente ipdelserver e latuachiave

8. rendere più sicuro il server

per evitare che gli utenti accedano alla shell via ssh

1
$ sudo vim /etc/passwd

modificare l’ultima riga

1
git:x:1000:1000::/home/git:/bin/sh

sostituendo la shell con git-shell

1
git:x:1000:1000::/home/git:/usr/bin/git-shell

cosi facendo chi si collega con l’utente git vedrà il seguente messaggio:

1
2
3
4
5
$ ssh git@gitserver

fatal: What do you think I am? A shell?

Connection to gitserver closed.