From 5a8d7dd303217c1277bfa565f530846dacadb9f1 Mon Sep 17 00:00:00 2001 From: Vadim Troshchinskiy Date: Wed, 13 Nov 2024 11:55:04 +0100 Subject: [PATCH] Add oglive key to forgejo --- installer/README.md | 25 ++++++++++++++++++++----- installer/opengnsys_git_installer.py | 10 +++++++++- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/installer/README.md b/installer/README.md index 14e93c0..bd3f8bd 100644 --- a/installer/README.md +++ b/installer/README.md @@ -9,16 +9,27 @@ Para instalar dependencias de python se usa el modulo venv (https://docs.python. ## Ubuntu 24.04 - sudo apt install python3-git python3-libarchive-c python3-termcolor bsdextrautils + sudo apt install python3-git opengnsys-libarchive-c python3-termcolor bsdextrautils -## Agregar clave de SSH si es necesario +## Agregar claves de SSH a oglive -El proceso falla si no hay clave de SSH en la imagen. Utilizar: +El sistema de Git accede al ogrepository por SSH. Para funcionar, necesita que el oglive tenga una clave de SSH, y que el ogrepository la acepte. - /opt/opengnsys/bin/setsslkey +El instalador de Git puede realizar los cambios requeridos, con: -para agregarla. + ./opengnsys_git_installer.py --set-ssh-key + +O para hacerlo contra un oglive especifico: + + ./opengnsys_git_installer.py --set-ssh-key --oglive 1 # numero de oglive + +Ejecutar este comando agrega la clave de SSH a Forgejo automáticamente. + + +La clave existente puede extraerse con: + + ./opengnsys_git_installer.py --extract-ssh-key --quiet # Ejecutar @@ -34,7 +45,11 @@ Forgejo gestiona los repositorios y el acceso por SSH, por lo cual debe quedarse El usuario por defecto es `oggit` con password `opengnsys`. +# Paquetes con dependencias +El sistema OgGit requiere módulos de Python que no vienen en Ubuntu 24.04 o tienen versiones demasiado antiguas. + +Los fuentes de los paquetes se encuentran en oggit/packages. # Documentación de código fuente diff --git a/installer/opengnsys_git_installer.py b/installer/opengnsys_git_installer.py index ebf1288..2ff4e47 100755 --- a/installer/opengnsys_git_installer.py +++ b/installer/opengnsys_git_installer.py @@ -373,6 +373,7 @@ class OpengnsysGitInstaller: client_key_path = os.path.join(ssh_key_dir, "id_ed25519") authorized_keys_path = os.path.join(ssh_key_dir, "authorized_keys") + oglive_public_key = "" # Create a SSH key on the oglive, if needed @@ -383,6 +384,10 @@ class OpengnsysGitInstaller: self.__logger.info("Writing new SSH key into %s", client_key_path) subprocess.run(["/usr/bin/ssh-keygen", "-t", "ed25519", "-N", "", "-f", client_key_path], check=True) + with open(client_key_path + ".pub", "r", encoding="utf-8") as pubkey: + oglive_public_key = pubkey.read() + + # Add our public keys to the oglive, so that we can log in public_keys = "" for username in self.ssh_key_users: @@ -451,10 +456,13 @@ class OpengnsysGitInstaller: with open(client_initrd_path, "rb") as initrd_file: hexdigest = hashlib.file_digest(initrd_file, "sha256").hexdigest() with open(client_initrd_path + ".sum", "w", encoding="utf-8") as digest_file: - digest_file.write(hexdigest) + digest_file.write(hexdigest + "\n") self.__logger.info("Updated initrd %s", client_initrd_path) + + self.add_forgejo_sshkey(oglive_public_key, "Key for " + ogclient) + def install(self): """Instalar