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