Add oglive key to forgejo

fixes
Vadim vtroshchinskiy 2024-11-13 11:55:04 +01:00
parent 927e24e13e
commit 5a8d7dd303
2 changed files with 29 additions and 6 deletions

View File

@ -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

View File

@ -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