domingo, 22 de abril de 2018

Como criar um servidor ssh para trabalhar com git

Como criar um servidor ssh para trabalhar com git

=========================================================

O primeiro passo é instalar o ssh no cliente e no servidor:

# apt install openssh-server
# apt install openssh-client
# apt install ssh

=========================================================

é preciso também ter o git instalado:

# apt install git

e configurar o nome e e-mail

$ git config --global user.name "Your Name"
$ git config --global user.email you@example.com

=========================================================

Servidor

Iniciando a configuração na máquina que será o servidor

Criar um usuário chamado git que será o proprietário dos repositórios:
# adduser git

Dar as devidas permissões:
# chown -R git:users /home/git

Configurar o ssh do servidor:
# gedit /etc/ssh/sshd_config

Nesse arquivo existe uma instrução chamada AllowUsers.
Ele define quais usuários estão permitidos a se logar através do ssh.
Adicionar o usuário git a essa configuração.
Adiconar a seguinte linha à esse arquivo:

AllowUsers root git

Reiniciar o serviço no sistema operacional para que as modificações tenham efeito.

# /etc/init.d/ssh restart

Criar uma pasta e um arquivo dentro do diretório raiz do usuário git para que o ssh possa controlar esse acesso sem senha.
Esses arquivos controlarão as chaves dos usuário autorizados a acessar e modificar os repositórios, chaves públicas e privadas.

Criar o diretório .ssh para o usuário git
# mkdir -p /home/git/.ssh/

Dar a permissão:
# chown -R git:users /home/git/.ssh
# chmod 700 /home/git/.ssh

Criar o arquivo authorized_keys
# touch /home/git/.ssh/authorized_keys

Dar a permissão:
# chown -R git:users /home/git/.ssh/authorized_keys
# sudo chmod 600 /home/git/.ssh/authorized_keys

Para conseguir copiar a chave para a pasta git, do cliente para o servidor, rodei o seguinte comando no servidor:
comando digitado no servidor:
# chown git /home/git/
Depois desse comando consegui copiar a chave pública para o servidor remotamente.

=========================================================

Cliente

No computador do cliente

Supondo que o nome do usuário do computador cliente seja:
usuario1

Supondo que o ip do servidor seja:
xxx.xxx.xxx.xxx

Antes de criar as chaves, conferir se o servidor está corretamente configurado com o ssh.
Logar no servidor com o usuário git:
$ ssh git@xxx.xxx.xxx.xxx

Criar chaves pública e privada:
$ ssh-keygen

Esse comando irá gerar dois arquivo dentro do diretório /home/usuario1/.ssh
Por padrão, esses arquivos irão chamar id_rsa.pub e id_rsa

Dar permissão para não precisar de digitar a senha

# chmod 600 .ssh/id_rsa
# chmod 600 .ssh/id_rsa.pub
$ chmod 600 .ssh/id_rsa
$ chmod 600 .ssh/id_rsa.pub


Copiar o conteúdo do arquivo id_rsa.pub para o servidor e colocá-lo no final do arquivo /home/git/.ssh/authorized_keys
Copiar a chave pública para o servidor remoto
$ scp /home/usuario1/.ssh/id_rsa.pub git@xxx.xxx.xxx.xxx:/home/git

=========================================================

Servidor

Inserir a chave do arquivo id_rsa.pub no final do arquivo authorized_keys
Comando digitado no servidor:
$ cat /home/git/id_rsa.pub >> /home/git/.ssh/authorized_keys

Remover o arquivo id_rsa.pub do servidor
$ rm /home/git/id_rsa.pub

obs.:
se estiver com o arquivo em um pendrive, no servidor, pode copiar dessa forma:
# cat /media/usuario2/pendrive/id_rsa.pub >> /home/git/.ssh/authorized_keys

Para começar a utilizar o git, deve-se criar um repositório no servidor com a opção --bare do git.
# cd /home/git/
# mkdir teste.git
# cd teste.git
# git init --bare

Dar as permissões:
# chown -R git:users /home/git/teste.git

=========================================================

No cliente

Criar um diretório novo chamado teste e inicializar um repositório git dentro dele.

Criar diretório para o novo repositório:
$ mkdir teste

Inicializar o repositório:
$ cd teste
$ git init .

Dizer para esse repositório git local qual tem como remote o repositório remoto.
Para isso utilizamos o comando git passando a URI do repositório no padrão ssh:

Adicionando um novo controlador remoto
$ git remote add origin git@xxx.xxx.xxx.xxx:/home/git/teste.git

Testando criar um arquivo, fazer commit e depois push para o repositório remoto:

Criar um novo arquivo
$ touch equilibrio.py

Adiconando o novo arquivo por commit:
$ git add equilibrio.py
$ git commit -m "Primeiro commit"

Enviando para o servidor remoto:
$ git push origin master

Com isso o git se conecta através do ssh e fez as devidas modificações no repositório remoto.
Outros usuário ao executar git pull desse mesmo repositório receberão suas modificações.
$ git pull origin master

Se desejar clonar o projeto, pode fazer assim:
$ git clone ssh://git@xxx.xxx.xxx.xxx/home/git/teste.git

=========================================================

Referências:

https://blog.pantuza.com/tutoriais/criando-um-servidor-git

https://www.howtogeek.com/168119/fixing-warning-unprotected-private-key-file-on-linux/

Nenhum comentário:

Postar um comentário