Configurar repositorio remoto GIT en Ubuntu
Configuración Inicial
Lo primero que haremos sera actualizar el sistema e instalar un editor de texto, en esta ocasion utilizaremos nano.
apt-get update -y && apt-get upgrade -y
apt-get -y install nano
Instalaremos Git y habilitaremos Git shell.
apt-get install -y git
echo "/bin/git-shell" >> /etc/shells
Cree un nuevo grupo para los usuarios de Git y especifique la autenticación sin contraseña para este grupo:
groupadd git_users
Utilizando nano añada las siguientes líneas al final del archivo /etc/ssh/sshd_config
.
nano /etc/ssh/sshd_config
Match Group git_users
PasswordAuthentication no
Reinicie el servicio SSH.
service sshd restart
Cree una nueva carpeta para alojar los futuros repositorios remotos git:
mkdir /repositorios
Creación de usuarios
Cree un usuario Git y en el home de dicho usuario un archivo authorized_keys para guardar las claves públicas SSH:
useradd -g git_users user_git
mkdir /home/user_git/.ssh
chmod 700 /home/user_git/.ssh
echo ""> /home/user_git/.ssh/authorized_keys
chmod 600 /home/user_git/.ssh/authorized_keys
chown -R user_git:git_users /home/user_git/.ssh
usermod --shell /bin/git-shell user_git
Creación de un repositorio remoto
Creamos nuestro e inicializamos el repositorio con --bare
para permitir realizar Pull y Push.
Y luego cambiamos el grupo del directorio actual a git_users
.
mkdir /repositorios/repo_git.git
cd /repositorios/repo_git.git
git init --bare --shared=group
sudo chgrp -R git_users .
Autorización SSH y gestión de acceso
Proporcione acceso para user_git al repositorio repo_git:
unlink /home/user_git/repo_git.git
sudo ln -s /repositorios/repo_git.git /home/user_git/
chown -R user_git:git_users /home/user_git
Genere una nueva clave SSH en la maquina que se conectara a su repositorio remoto con el siguiente código. Puede que requiera instalar Git.
ssh-keygen
Copie el contenido de su archivo id_rsa.pub
que en Windows generalmente se guarda en C:\Users\[Usuario]\.ssh
donde [Usuario]
es el nombre de tu Usuario Actual.
Ahora en nuestro repositorio remoto abrimos con nuestro editor de código como nano
el siguiente archivo y copiamos el contenido de id_rsa.pub
que debe comenzar con ssh-rsa ...
.
nano /home/user_git/.ssh/authorized_keys
Guardamos cambios y reinciamos el servicio SSHD.
service sshd restart
Configuración del lado del cliente
Nos aseguramos que se haya definido el email
y name
en la configuracion de git. Puedes definirlo con:
git config --global user.email "[email protected]"
git config --global user.name "Your Name"
Agregarmos un remote en git con donde [host_servidor_remoto]
es la IP o URL donde se se encuentra el repositorio remoto que acabos de crear y origin
es el nombre del remote el cual puede ser cambiado por otro para poderlo identificar en caso de tener varios remotes definidos en nuestro repositorio.
git remote add origin user_git@[host_servidor_remoto]:repo_git.git
Ahora ya podemos incializar un repositorio y enviarlo al repositorio remoto:
git init .
echo "Commit Incial" > readme.md
git add .
git commit -m "initial commit"
git push origin master
Si ya cuentas con un repositorio existente solo tendras que escribir lo siguiente:
git push origin master