- Crie uma pasta no
/var/www/
chamada.ssh
.
mkdir -p /var/www/.ssh
- Crie uma chave para o usuário
www-data
.
ssh-keygen -t rsa -C "www-data"
- Quando perguntar por uma senha, deixe em branco.
- Quando perguntar onde salvar o arquivo da chave, digite:
/var/www/.ssh/id_rsa
- Agora, copie a chave pública.
cat /var/www/.ssh/id_rsa.pub
- No GitLab, vá em settings do projeto,
crie uma nova Deploy Key, cole e salve.
- Mude o dono e as permissões da pasta
/var/www/.ssh
recursivamente.
sudo chmod -R 0600 /var/www/.ssh
sudo chown -R www-data:www-data /var/www/.ssh
- Finalmente, clone seu projeto ou faça um acesso ssh para que a deploy key seja armazenada. Precisamos apenas armazenar o fingerprint SSH RSA do servidor no arquivo
/var/www/.ssh/known_hosts
. Assim, a operação atrás dos bastidores não travará quando tentar se conectar pela primeira vez sem a intervenção do usuário.:
sudo -u www-data cd /var/www/ && git clone [email protected]/user/someproject.git
ou
sudo -u www-data ssh git.yourserver.com
Quando for pedido para armazenar o fingerprint RSA, digite "yes".
-
Configure permissão 777 em
/var/www/.ssh/known_hosts
:sudo chmod 777 /var/www/.ssh/known_hosts
-
Execute o passo 8 novamente.
-
Configure a permissão novamente:
sudo chmod 600 /var/www/.ssh/known_hosts
Caso tenha clonado o via protocolo HTTP, é necessário trocar o remoto para o protocolo GIT.
git remote remove origin
git remote add origin git@enderecogitlab:seuprojeto.git