¡Creé un conjunto de servicios Git privados de nivel empresarial, que resistían decenas de miles de ataques todos los días!

Escribir al frente

La cosa es así: durante la epidemia de este año, compré un conjunto de servidores en una determinada nube, ¿qué debo hacer? No se utiliza para implementar proyectos, ni para crear sitios web, sino para realizar copias de seguridad y administración de código. Así es, es todo mi código personal, tal vez dirías, ¿cuánto código puedes tener personalmente? Realmente no es mucho. Las copias de seguridad son todos mis trabajos personales de código abierto en GitHub. ¿Por qué esta gestión de copias de seguridad? La razón es que ¿quién puede garantizar que un determinado país no nos restringirá el uso de GitHub algún día?

Los amigos pueden seguir la cuenta pública de WeChat de [Glacier Technology], responder [Git] para recibir el paquete de instalación de Git.

Implementar el servicio Git privado

Simplemente hágalo, haga un pedido y pague de una vez. El siguiente paso es crear un servicio Git privado a nivel empresarial. Una vez terminada la construcción, no esperaba que me atacaran unos días después de la finalización de la construcción. Um, MD, la nube no es segura, ¿cambiar a otro servicio en la nube? Para alguien que tiene algo de experiencia en penetración, realmente no quiero cambiar, solo quiero ver si puedo resistir estos ataques. Desde entonces, analicé cuidadosamente las tácticas y leyes de estos ataques, y mejoré paso a paso el servicio privado de Git que construí. ¡En la actualidad, ha podido resistir decenas de miles de ataques todos los días!

Inserte la descripción de la imagen aquí

Antes de presentar oficialmente cómo construir un servicio Git privado a nivel empresarial, echemos un vistazo a los cuatro protocolos de comunicación de Git.

Git cuatro protocolos de comunicación

En pocas palabras, los cuatro protocolos de comunicación de Git son: Local, SSH, HTTP y Git, como se muestra a continuación.

Inserte la descripción de la imagen aquí

Local (protocolo local)

Acceso basado en el sistema de archivos local o el sistema de archivos compartido (NFS),

Ventajas: Simple, utilizando directamente los permisos de archivos existentes y los permisos de acceso a la red. Es muy fácil establecer un sistema de gestión de versiones de este tipo para equipos pequeños y proyectos pequeños.

Desventajas: El defecto de este protocolo es la limitación del propio sistema de archivos compartidos, que solo puede estar en la red de área local, y la velocidad es lenta.

Adáptese a la escena: equipos pequeños, servicios de versión de compilación temporal para proyectos pequeños.

Uso del protocolo local

(1) Clone el proyecto del directorio local f / git / atals

git clone /f/git/atals/

Incluso el almacén básico se puede descargar normalmente

git clone /f/git/atals.git

(2) Clonar el proyecto local según el protocolo de archivo

git clone file:///f/git/atals/

Si especifica explícitamente file: // al principio de la URL, Git se comportará de manera ligeramente diferente. Si solo especifica la ruta, Git intentará usar enlaces físicos o copiar directamente los archivos requeridos. Si especifica file: //, Git activará el proceso que generalmente se usa para transferir datos a través de la red. Los archivos empaquetados se transfieren, lo que ahorra espacio en el disco duro.

Protocolo SSH

Git admite el uso del protocolo ssh para la comunicación, que es compatible con la mayoría de los sistemas linux y uninx, por lo que es muy conveniente utilizar este protocolo para configurar los servicios de la versión GIT.

Ventajas: En primer lugar, SSH es relativamente simple de configurar y en segundo lugar, el acceso a través de SSH es seguro. Además, el protocolo SSH es muy eficiente y los datos se comprimirán tanto como sea posible antes de la transmisión.

Desventajas: El sistema de permisos no es flexible y se debe proporcionar la contraseña de la cuenta del sistema operativo, incluso si solo necesita leer la versión.

Adaptarse a la escena: pequeños equipos, pequeños proyectos, proyectos temporales

Cómo utilizar el protocolo SSH

Aquí instalamos primero el servicio Git en el sistema Linux y luego usamos el protocolo SSH para comunicarnos con el servicio Git.

linux instalar servicio git

(1) Entorno dependiente de la instalación

yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker

(2) Descarga y descomprime el código fuente

wget https://github.com/git/git/archive/v2.3.0.zip

Si cree que la velocidad de la red de GitHub es demasiado lenta, puede seguir la cuenta oficial de [Glacier Technology] WeChat y responder [Git] para recibir el paquete de instalación de Git.

unzip v2.3.0.zip
cd git-2.3.0

(3) Compile e instale (si no tiene permiso, agregue sudo)

make prefix=/usr/local/git all
make prefix=/usr/local/git install

(4) Agregar variables de entorno

vim /etc/profile
export PATH=/usr/local/git/bin:$PATH
source /etc/profile

Si el número de versión se muestra correctamente, la adición se realiza correctamente.

git --version
git version 2.3.0

(5) Crea un proyecto simple

git --bare init binghe.git

(6) Local basado en almacén de clones remoto

git clone [email protected]:/data/git-repository/binghe.git
cd binghe/

(7) Agregar archivos

echo "this is binghe" >> README.MD

(8) Agregar, enviar y enviar localmente a remoto

git add -A; git commit -am 'first commit'; git push;

Posibles errores:

git-upload-pack: command not found

La razón es que solo se puede acceder a los directorios bajo / usr / bin bajo el protocolo ssh. La solución es la siguiente:

ln -s /usr/local/git/bin/git-upload-pack /usr/bin/git-upload-pack
ln -s /usr/local/git/bin/git-receive-pack /usr/bin/git-receive-pac\k

Protocolo HTTP

La implementación del protocolo http de Git se basa en contenedores WEB perezosos (apache, nginx) y componentes cgi para comunicación e interacción, y utiliza el propio sistema de permisos del contenedor WEB para la verificación de autorización. Antes de Git 1.6.6, solo se admitía el protocolo http dumb. Este protocolo solo se puede descargar, pero no enviar. Por lo general, se usa con el protocolo ssh. Ssh asigna una cuenta de envío y http dumb proporciona una cuenta de solo lectura. Después de 1.6.6, git proporciona git-http-backend CGI para recibir push remoto y otras funciones.

Ventajas: resuelve el problema único de la verificación de autorización local y ssh, y puede proporcionar servicios anónimos basados ​​en la URL http, de modo que se pueda poner en la red pública. Sin embargo, local y ssh son difíciles de lograr, y es necesario implementar un sitio web como github.

Desventajas: La configuración es más complicada y requiere la implementación de un servidor WEB y una configuración como el certificado https

Escenario: equipos grandes, control preciso de permisos e implementación de servicios en la red pública

Configuración y uso HTTP Dumb

(1) Cree un almacén de versiones de servidor

cd /data/git-repository
git --bare init binghe.git
cd binghe.git/hooks/mv 

(2) Enlace de actualización de versión, que realizará la actualización cuando se envíe una versión

post-update.sample post-update
./post-update

Configuración de acceso estático de Nginx

server {
    
    
    listen    80;
    server_name git.tl.com;
    location / {
    
    
      root /data/git-repository;
    }
}

(3) Cambiar el nombre del gancho

mv hooks/post-update.sample hooks/post-update

(4) Servicio remoto de clonación local

git clone http://git.tl.com/binghe.git

Nota: El protocolo http Smart se basa en CGI y se usa con el script GIT git-http-backend. La configuración es más complicada. Por lo general, no se hace ahora, sino que utiliza la administración web como gitlab y gogs.

Protocolo de Git

El protocolo Git es un demonio especial incluido en Git; escucha en un puerto específico (9418), similar al servicio SSH, pero el acceso no requiere ninguna autorización.

Ventajas : En la actualidad, el protocolo Git es el más rápido de los protocolos de transmisión de red utilizados por Git. Si su proyecto tiene muchas visitas, o su proyecto es muy grande y no requiere autorización del usuario para escribir, configurar un demonio Git para proporcionar servicios es una buena opción. Utiliza el mismo mecanismo de transmisión de datos que SSH, pero elimina la sobrecarga de cifrado y autorización.

Desventajas : La desventaja del protocolo Git es la falta de mecanismos de autorización. Además, 9418 es un puerto no estándar y el firewall general no lo abrirá.

Uso del protocolo Git

cd binghe.git/

(1) Cree un archivo vacío, lo que significa que el proyecto está abierto

touch git-daemon-export-ok

(2) Inicie el demonio

nohub git daemon --reuseaddr --base-path=/data/git-repository/ /data/git-repository/ &

(3) Proyecto remoto de clonación local

git clone git://192.168.0.147:9418/binghe.git

Al ver esto, mis amigos están un poco cansados. Vamos a mostrarles una chica. Más adelante continuaremos el enfoque de hoy: construir un servicio Git privado a nivel empresarial.

Inserte la descripción de la imagen aquí

Cree un servicio Git privado de nivel empresarial

Aquí, somos un servicio GIt de nivel empresarial basado en gogs.

instalación del servicio de gogs

Gogs es un servicio web Git ligero de código abierto, que se caracteriza por su sencillez y facilidad de uso, documentación completa y una muy buena internacionalización. Sus principales funciones son las siguientes:

  • Proporcione dos protocolos Http y ssh para acceder a los servicios de código fuente
  • Proporcionar una interfaz WEB para ver y modificar el código fuente.
  • Proporcionar una función de gestión de autoridad más completa, incluida la autoridad de almacén, como organización, equipo e individuo.
  • Proporcionar una función wiki de proyecto simple
  • Proporcionar gestión de órdenes de trabajo y gestión de hitos.

Descargar e instalar

Sitio web oficial: https://gogs.io

Descargar: https://gogs.io/docs/installation elija linx amd64 para descargar e instalar

Documentación: https://gogs.io/docs/installation/install_from_binary

instalación

Directorio después de la descompresión:

Inserte la descripción de la imagen aquí

correr

(1) Operación en primer plano

./gogs web

(2) Ejecutando en segundo plano

nohup ./gogs web &

Puerto predeterminado: 3000

La primera vez que visite http: //: 3000, ingresará a la página de inicialización para la configuración de arranque.

Se pueden seleccionar datos como mysql o sqlite. Sqllite se selecciona aquí

Nota: El problema de la longitud del índice de mysql no se instaló correctamente, debe usar mysql5.7 o superior

Configuración básica de Gogs

Instrucciones de configuración de correo:

La configuración de correo electrónico se utiliza para la confirmación por correo electrónico durante el registro y el envío de correo electrónico de verificación cuando se recupera la contraseña. La configuración se divide en dos pasos:

(1) Cree una cuenta de correo electrónico con el servicio smtp activado, generalmente el correo electrónico del administrador de la empresa. Yo uso el buzón QQ aquí.

(2) Configure en el archivo {gogs_home / custom / conf / app.ini.

Buzón QQ abre servicio smtp

(1) Haga clic en Configuración

Inserte la descripción de la imagen aquí

(2) Encienda smtp

Inserte la descripción de la imagen aquí

Ajustes del correo electrónico

Archivo de configuración: {gogs_home} /custom/conf/app.ini
Inserte la descripción de la imagen aquí

Como puede ver, la información principal que configuramos es la siguiente.

ENABLED = true
HOST=smtp.qq.com:465
FROM=
USER=
PASSWD=
  • HABILITADO : si se habilita el servicio de correo, verdadero significa habilitar el servicio de correo.
  • host es la dirección del servidor smtp, (el servicio smtp debe ser activado por el buzón correspondiente y debe accederse en forma de ssl)
  • de la dirección del nombre del remitente
  • usuario que envía cuenta
  • Habrá un código de autorización correspondiente cuando passwd abra una cuenta smtp

Después de reiniciar, puede probar directamente. Los amigos pueden probar en el siguiente orden.

Inicio de sesión de administrador ==》 Panel de control ==》 Gestión de configuración de la aplicación ==》 Configuración de correo ==》 Enviar correo electrónico de prueba

copia de seguridad y recuperación periódicas de gogs

Copia de seguridad y restaurar:

(1) Ver los parámetros relacionados con la copia de seguridad

./gogs backup -h

(2) La copia de seguridad predeterminada, la copia de seguridad está en el directorio actual

./gogs backup 

(3) Copia de seguridad parametrizada - directorio de salida de destino - base de datos solo copia de seguridad db

./gogs backup --target=./backupes --database-only --exclude-repos

(4) Recuperación. Elimina custom.bak antes de ejecutar este comando

./gogs restore --from=gogs-backup-20200920062712.zip

(5) Script de respaldo automático

\#!/bin/sh -e
gogs_home="/home/apps/svr/gogs/"
backup_dir="$gogs_home/backups"
cd `dirname $0`

(6) Ejecute el comando de respaldo

./gogs backup --target=$backup_dir
echo 'backup sucess'
day=7

(7) Busque y elimine la copia de seguridad hace 7 días

find $backup_dir -name '*.zip' -mtime +7 -type f |xargs rm -f;
echo 'delete expire back data!'

(8) Agregue una tarea programada para realizar copias de seguridad a las 4:00 todos los días

Editor de tareas abierto

crontab -e

Ingrese el siguiente comando 00 04 * * * Ejecute do-backup.sh a las 4 AM todos los días y envíe el registro a # backup.log

00 04 * * * /home/apps/svr/gogs/do-backup.sh >> /home/apps/svr/gogs/backup.log 2>&1

Configurar y agregar la clave pública del cliente

Configuración de Git

Después de instalar Git, debe realizar la configuración final. Abra git bash y ejecute los siguientes dos comandos respectivamente

git config --global user.name “用户名”
git config --global user.email “邮箱”

Git recuerda automáticamente las operaciones de usuario y contraseña

git config --global credential.helper store

Creación de clave pública SSH

(1) Abrir git bash

(2) Ejecute el comando para generar claves públicas y privadas: ssh-keygen -t rsa y presione Enter 3 veces

(3) Ejecute el comando para ver la clave pública: cat ~ / .ssh / id_rsa.pub

(4) Copie el contenido de id_rsa.pub al servidor ~ / .ssh / allowed_keys

Grandes beneficios

Busque en la cuenta pública de WeChat [Glacier Technology] WeChat, preste atención a este programador en profundidad, lea los productos secos de tecnología de núcleo superduro todos los días y responda en la cuenta pública [PDF] He preparado los materiales de primera línea para entrevistas de fábricas importantes y mi superduro original Documentos técnicos en PDF nucleares, así como una serie de plantillas de currículum que he preparado cuidadosamente para todos (actualizadas continuamente), espero que todos puedan encontrar su trabajo favorito. Aprender es una forma de estar deprimido de vez en cuando y, a veces, de reír. Vamos. Si logra ingresar a la empresa de su elección a través del trabajo duro, no debe aflojarse: el crecimiento en el lugar de trabajo es lo mismo que el aprendizaje de nuevas tecnologías. Si tenemos la suerte, ¡nos vemos de nuevo!

Además, continuaré actualizando y manteniendo los PDF que abrí. ¡Gracias por su apoyo a largo plazo a Glacier! !

Supongo que te gusta

Origin blog.csdn.net/l1028386804/article/details/108700661
Recomendado
Clasificación