> ## Documentation Index
> Fetch the complete documentation index at: https://docs.basaltic.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Acceso SSH con IAM

> Utilice inicios de sesión individuales de Linux y credenciales SSH revocables para personas y automatización.

Agrega una clave pública SSH a tu perfil o a una cuenta de servicio y, a continuación, concede permisos de identidad para acceder a la instancia. Una clave no tiene permisos propios y no se adjunta a cada instancia.

Las personas usan el nombre de usuario permanente que eligen para su perfil de Basaltic, como `ana`. Es globalmente único y compartido en cada organización a la que se unen. Las cuentas de servicio usan `sa_<name>`: una cuenta de servicio llamada `deploy` inicia sesión como `sa_deploy`.

El UID y el GID primario pertenecen a la membresía de la organización. Puedes consultarlos, junto con el directorio personal, en **Settings** del usuario de la organización. Las nuevas identidades humanas usan `/home/bsu_<uid>`; las cuentas de servicio usan `/home/bsa_<uid>`. Las identidades existentes conservan sus directorios actuales, incluido `/home/<username>`. Usa el campo `home_directory` devuelto o `$HOME`, en vez de deducir la ruta a partir del login. El UID y el GID definen la propiedad de los archivos.

<a id="choose-a-username" />

## Elige un nombre de usuario

La consola le pide que elija un nombre de usuario después de iniciar sesión si no tiene uno. Elige con cuidado: no puede ser cambiado o reutilizado por otra persona después de eliminar tu perfil. Los nombres de visualización y las direcciones de correo electrónico permanecen separados.

Utilice de 1 a 32 letras minúsculas, dígitos, guiones bajos o guiones, comenzando con una letra o un guion bajo. Los nombres de cuentas del sistema y los prefijos `sa_`, `bsu_` y `bsa_` están reservados. Las invitaciones usan el nombre de usuario elegido por el destinatario; un administrador de la organización no puede elegirlo ni cambiarlo por ellos.

Los nombres de cuenta de servicio usan de 2 a 29 letras minúsculas, dígitos o guiones, comienzan con una letra y terminan con una letra o un dígito. Son inmutables y únicos dentro de la cuenta propietaria. No hay una configuración de nombre de usuario Linux separada.

Un invitado en ejecución debe usar guest-agent 1.12.1-1 o posterior para directorios de inicio con nombre. Una cuenta de invitado local en conflicto bloquea el inicio de sesión en lugar de asumir los archivos o privilegios de esa cuenta.

Eliminar una identidad no elimina sus directorios personales en las instancias. Quitar y volver a añadir a una persona, o eliminar y recrear una cuenta de servicio con el mismo nombre, asigna un nuevo UID y un directorio distinto. El nombre de login sigue siendo el mismo; la nueva identidad no hereda el directorio anterior ni sus archivos. Las identidades existentes conservan su directorio durante las actualizaciones habituales y la elección del nombre de usuario. El agente nunca transfiere la propiedad automáticamente y rechaza un directorio que pertenezca a otra identidad.

<a id="add-your-public-key" />

## Añadir tu clave pública

Mantenga la clave privada en su computadora. Sube la única línea de clave pública de OpenSSH desde su archivo `.pub`. Cada identidad admite hasta 50 claves, con una fecha de caducidad opcional. La caducidad y la revocación impiden nuevos inicios de sesión sin volver a crear la máquina virtual.

<Tabs>
  <Tab title="Console">
    Abra su perfil de cuenta y busque **SSH Keys**. Elija **Add SSH Key**, ingrese un **Name** y pegue la clave pública. Tu perfil muestra tu nombre de usuario permanente. Los ID numéricos específicos de la organización aparecen en la configuración de usuario de la organización.
  </Tab>

  <Tab title="API">
    ```http theme={null}
    POST https://iam.basaltic.sh/v1/auth/ssh-keys
    Content-Type: application/json

    {
      "name": "workstation",
      "public_key": "ssh-ed25519 <your-public-key>"
    }
    ```

    Usa tu sesión de inicio de sesión humano. Las credenciales SSH personales no se pueden administrar mediante una cuenta de servicio o una credencial de rol asumido.
  </Tab>

  <Tab title="CLI">
    ```bash theme={null}
    basaltic iam ssh-key create --name workstation --public-key "$(cat ~/.ssh/id_ed25519.pub)"
    basaltic iam auth get-linux-identity
    ```

    Utilice un perfil autenticado como su usuario.
  </Tab>

  <Tab title="Go">
    ```go theme={null}
    key, err := iam.New(cfg).CreatePersonalSSHKey(ctx, &iam.SSHKeyCreateRequest{
        Name: "workstation",
        PublicKey: publicKey,
    })
    ```

    Configure el cliente con su sesión humana. `publicKey` contiene la línea de la clave pública de OpenSSH, nunca la clave privada.
  </Tab>
</Tabs>

Para automatizar, administra las credenciales SSH en la página de la cuenta de servicio. Sus rutas de API `ssh-keys` y `linux-identity` están en `/v1/service-accounts/{service_account_id}`. La administración de esas credenciales requiere `iam:ManageCredentials` en esa cuenta de servicio. SSH no emite credenciales de API al invitado ni da a sus cargas de trabajo la identidad de inicio de sesión.

<a id="grant-login-and-sudo-separately" />

## Conceder inicio de sesión y sudo por separado

Una persona tiene un rol de IAM efectivo en cada cuenta, incluidos los roles asignados a través de grupos. Varios grupos pueden asignar el mismo rol. Un segundo papel conflictivo es rechazado. SSH usa ese rol de cuenta actual; no hay un selector de rol en una clave SSH.

Conceda estas acciones en los CRN de instancia deseados:

| Acción y aventura | Acceso a la página |
| - | - |
| `compute:SSHLogin` | Abrir una sesión SSH como usuario Linux de la identidad |
| `compute:SSHAdminLogin` | Usar sudo; también requiere `compute:SSHLogin` |

Por ejemplo, esta directiva permite el inicio de sesión ordinario en una instancia:

```json theme={null}
{
  "version": "2024-01-01",
  "statements": [{
    "effect": "allow",
    "actions": ["compute:SSHLogin"],
    "resources": ["crn:compute:sa-saopaulo-1:my-account:instance/web"]
  }]
}
```

Adjunte la política al rol de cuenta del usuario o directamente a la cuenta del servicio de automatización. La confianza de rol, la pertenencia actual al grupo, las condiciones de etiqueta de recursos, los límites de permisos y las denegaciones explícitas siguen aplicándose. El rol de carga de trabajo de IAM de la instancia es independiente de la autoridad de inicio de sesión de SSH.

<a id="login-shell" />

## Shell de inicio de sesión

Con el agente invitado 1.14.0-1 o posterior, los usuarios de IAM utilizan Bash cuando está instalado, de lo contrario, `/bin/sh`. Este valor predeterminado se aplica tanto a los usuarios de IAM existentes como a los nuevos. Vuelva a conectarse después de actualizar el agente invitado para iniciar una sesión con el shell seleccionado.

Los usuarios de IAM son cuentas virtuales y no tienen entradas en `/etc/passwd`. Su shell de inicio de sesión se selecciona automáticamente; no se admite la personalización de shell por usuario. `chsh` y `usermod` no pueden cambiar estas cuentas virtuales. Las cuentas locales de Linux conservan sus shells configurados y utilizan las herramientas habituales de cuenta de distribución.

<a id="enable-an-existing-guest" />

## Habilitar un invitado existente

La integración de IAM SSH es compatible con Debian 11, 12 y 13, Ubuntu 20.04, 22.04 y 24.04, y Rocky Linux 9 con el cumplimiento de SELinux. Las nuevas instancias creadas a partir de estas imágenes de plataforma habilitan IAM SSH durante su primer arranque.

Para una máquina virtual existente, actualice el agente invitado desde el repositorio de paquetes de Basaltic configurado a la versión 1.11.0-1 o posterior. Mantener una sesión de administración en funcionamiento mientras se habilita la integración:

```sh theme={null}
sudo -n /usr/bin/basaltic-guest-agent ssh-install
sudo -n systemctl daemon-reload
sudo -n systemctl restart basaltic-guest-agent.service
sudo -n systemctl reload ssh.service
```

En Rocky Linux 9, use `sshd.service` en el último comando. El instalador conserva el perfil y las funciones de authselect seleccionados a través de un perfil administrado. SELinux sigue haciendo cumplir.

A continuación, verifique una nueva conexión con el nombre de usuario de Linux de su perfil o cuenta de servicio. El primer inicio de sesión exitoso crea su directorio de inicio. Con el agente invitado 1.14.3-1 o posterior, los nuevos hogares incluyen los archivos de inicio de shell predeterminados de la distribución desde `/etc/skel`, incluyendo su configuración de color de prompt y comando. Los inicios de sesión posteriores dejan los archivos existentes sin cambios. Habilitar el acceso con nombre no migra un inicio de sesión `basaltic` existente ni cambia la propiedad de sus archivos.

<Note>
  Otras distribuciones y configuraciones personalizadas de SSH Match necesitan una integración validada por separado. Una configuración de authselect debe pasar `authselect check` antes de la instalación; los archivos generados modificados localmente necesitan ser conciliados a través de authselect primero. El instalador rechaza configuraciones que no puede manejar de forma segura. No deshabilite los controles de seguridad de invitado para forzar la activación.
</Note>

<a id="revocation-and-existing-sessions" />

## Revocación y sesiones existentes

Las comprobaciones de búsqueda de claves, inicio de sesión y sudo consultan el estado actual de IAM. La eliminación de una clave, la desactivación de su identidad o la eliminación de su permiso aplicable bloquea los nuevos inicios de sesión SSH. Un corte de control o metadatos también bloquea el nuevo acceso porque un permiso no puede ser verificado.

Las sesiones SSH ya establecidas y los shells root continúan. La revocación no termina los procesos existentes. Sudo vuelve a comprobar los permisos de inicio de sesión/administrador actuales y si la identidad está habilitada. La revocación de una clave por sí sola no elimina esos permisos de una sesión ya autenticada.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.