En esta página se describe cómo habilitar el acceso interactivo a la consola serie de una instancia para depurar problemas de arranque y de red, solucionar problemas de instancias que no funcionan correctamente, interactuar con GRand Unified Bootloader (GRUB) y realizar otras tareas de solución de problemas.
Una instancia de máquina virtual (VM) tiene cuatro puertos serie virtuales. Interactuar con un puerto serie es similar a usar una ventana de terminal, ya que la entrada y la salida se realizan completamente en modo texto y no hay interfaz gráfica ni compatibilidad con el ratón. El sistema operativo, la BIOS y otras entidades a nivel de sistema de la instancia suelen escribir la salida en los puertos serie y pueden aceptar entradas, como comandos o respuestas a peticiones. Normalmente, estas entidades a nivel de sistema utilizan el primer puerto serie (puerto 1), que a menudo se denomina consola serie.
Si solo necesitas ver la salida del puerto serie sin enviar ningún comando a la consola serie, puedes llamar al método getSerialPortOutput
o usar Cloud Logging para leer la información que tu instancia ha escrito en su puerto serie. Consulta Ver registros del puerto serie.
Sin embargo, si tienes problemas para acceder a tu instancia a través de SSH o necesitas solucionar problemas de una instancia que no se ha iniciado por completo, puedes habilitar el acceso interactivo a la consola en serie, que te permite conectarte e interactuar con cualquiera de los puertos en serie de tu instancia. Por ejemplo, puedes ejecutar comandos directamente y responder a peticiones en el puerto serie.
Cuando habilitas o inhabilitas el puerto serie, puedes usar cualquier valor booleano que acepte el servidor de metadatos. Para obtener más información, consulta Valores booleanos.
Antes de empezar
-
Si aún no lo has hecho, configura la autenticación.
La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:
gcloud init
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
- Set a default region and zone.
REST
Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.
Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:
gcloud init
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .
Habilitar el acceso interactivo a la consola en serie
Habilita el acceso a la consola en serie interactiva para instancias de VM concretas o para todo un proyecto.
Habilitar el acceso a un proyecto
Si habilitas el acceso interactivo a la consola en serie en un proyecto, se habilitará el acceso para todas las instancias de VM que formen parte de ese proyecto.
De forma predeterminada, el acceso interactivo al puerto serie está inhabilitado. También puedes inhabilitarlo explícitamente definiendo la clave
serial-port-enable
comoFALSE
. En cualquier caso, cualquier configuración por instancia anula la configuración a nivel de proyecto o la configuración predeterminada.Consola
- En la Google Cloud consola, ve a la página Metadatos.
- Haga clic en Editar para modificar las entradas de metadatos.
- Añade una entrada que use la clave serial-port-enable y el valor TRUE.
- Guarda los cambios.
gcloud
Con Google Cloud CLI, introduce el comando
project-info add-metadata
de la siguiente manera:gcloud compute project-info add-metadata \ --metadata serial-port-enable=TRUE
REST
En la API, haz una solicitud al método
projects().setCommonInstanceMetadata
y proporciona la claveserial-port-enable
con el valorTRUE
:{ "fingerprint": "FikclA7UBC0=", "items": [ { "key": "serial-port-enable", "value": "TRUE" } ] }
Habilitar el acceso a una instancia de máquina virtual
Habilita el acceso a la consola en serie interactiva para una instancia específica. Si existe, un ajuste por instancia anula cualquier ajuste a nivel de proyecto. También puedes inhabilitar el acceso a una instancia específica, aunque esté habilitado a nivel de proyecto, configurando
serial-port-enable
enFALSE
en lugar deTRUE
. Del mismo modo, puedes habilitar el acceso a una o varias instancias aunque esté inhabilitado para el proyecto, ya sea de forma explícita o predeterminada.Consola
- En la consola de Google Cloud , ve a la página Instancias de VM.
- Haz clic en la instancia a la que quieras habilitar el acceso.
- Haz clic en Editar.
- En la sección Acceso remoto, activa o desactiva la casilla Habilitar la conexión a los puertos serie.
- Guarda los cambios.
gcloud
Con Google Cloud CLI, introduce el comando
instances add-metadata
y sustituyeinstance-name
por el nombre de tu instancia.gcloud compute instances add-metadata instance-name \ --metadata serial-port-enable=TRUE
REST
En la API, haz una solicitud al método
instances().setMetadata
con la claveserial-port-enable
y el valorTRUE
:POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/example-instance/setMetadata { "fingerprint": "zhma6O1w2l8=", "items": [ { "key": "serial-port-enable", "value": "TRUE" } ] }
Configurar la consola serie de una instancia de Bare Metal
En las instancias de hardware desnudo, aumenta la tasa de bits, también conocida como tasa de baudios, de la consola serie a 115.200 bps (aproximadamente 11,5 kB/s). Si usas una velocidad más lenta, el resultado de la consola será ilegible o faltará información.
La configuración del gestor de arranque varía según el sistema operativo y la versión del SO. Consulta las instrucciones en la documentación del distribuidor del SO.
Si quieres modificar la tasa de bits en la línea de comandos de la sesión actual, usa un comando similar al siguiente:
console=ttyS0,115200
Si modificas la configuración de GRUB, usa un comando similar al siguiente:
serial --speed=115200
Asegúrate de actualizar la configuración real del gestor de arranque. Para ello, puedes usar
update-grub
,grub2-mkconfig
u otro comando similar.Conectarse a una consola serie
Compute Engine ofrece pasarelas de consola en serie regionales para cada Google Cloud región. Después de habilitar el acceso interactivo a la consola en serie de una VM, puedes conectarte a una consola en serie regional.
La consola en serie autentica a los usuarios con claves SSH. En concreto, debes añadir tu clave SSH pública a los metadatos del proyecto o de la instancia y almacenar tu clave privada en la máquina local desde la que quieras conectarte. La CLI de gcloud y la consola Google Cloud añaden automáticamente claves SSH al proyecto. Si usas un cliente de terceros, puede que tengas que añadir las claves SSH manualmente.
Si utilizas un cliente de terceros, también puedes validar la conexión mediante las claves de host de la consola serie. Cuando usas la CLI de Google Cloud para conectarte, la autenticación de claves de host se realiza automáticamente en tu nombre.
Consola
Para conectarte a la consola en serie regional de una VM, sigue estos pasos:
- En la consola de Google Cloud , ve a la página Instancias de VM.
- Haz clic en la instancia a la que quieras conectarte.
- En Detalles, haz clic en Conectar con la consola serie para conectarte al puerto predeterminado (puerto 1).
- Si quieres conectarte a otro puerto serie, haz clic en la flecha hacia abajo situada junto al botón Conectar con la consola serie y cambia el número de puerto según corresponda.
- En las instancias de Windows, abre el menú desplegable situado junto al botón y conéctate al puerto 2 para acceder a la consola serie.
gcloud
Para conectarte a la consola serie regional de una VM, usa el comando
gcloud compute connect-to-serial-port
:gcloud compute connect-to-serial-port VM_NAME
--port=PORT_NUMBERHaz los cambios siguientes:
VM_NAME
: el nombre de la VM a cuya consola en serie quieres conectarte.PORT_NUMBER
: el número de puerto al que quieres conectarte. En el caso de las VMs Linux, usa1
. En el caso de las VMs Windows, usa2
. Para obtener más información sobre los números de puerto, consulta Información sobre la numeración de puertos serie.
Otros clientes SSH
Puedes conectarte a la consola serie de una instancia mediante otros clientes SSH de terceros, siempre que el cliente te permita conectarte al puerto TCP 9600. Antes de conectarte, puedes validar la conexión mediante las claves de host de la consola serie.
Para conectarte a la consola en serie regional de una VM, ejecuta uno de los siguientes comandos, en función del SO de la VM:
Para conectarte a una VM de Linux, sigue estos pasos:
ssh -i PRIVATE_SSH_KEY_FILE -p 9600 PROJECT_ID.ZONE.VM_NAME.USERNAME.OPTIONS@REGION-ssh-serialport.googleapis.com
Para conectarte a una VM de Windows, haz lo siguiente:
ssh -i PRIVATE_SSH_KEY_FILE -p 9600 PROJECT_ID.ZONE.VM_NAME.USERNAME.OPTIONS.port=2@REGION-ssh-serialport.googleapis.com
Haz los cambios siguientes:
PRIVATE_SSH_KEY_FILE
: la clave SSH privada de la instancia.PROJECT_ID
: el ID de proyecto de esta instancia de VM.ZONE
: la zona de la instancia de VM.REGION
: la región de la instancia de VM.VM_NAME
: nombre de la instancia de VM.USERNAME
: el nombre de usuario que usas para conectarte a tu instancia. Normalmente, es el nombre de usuario de tu máquina local.OPTIONS
: opciones adicionales que puedes especificar para esta conexión. Por ejemplo, puede especificar un puerto serie concreto y cualquier opción avanzada. El número de puerto puede ser un número entre 1 y 4, ambos incluidos. Para obtener más información sobre los números de puerto, consulta Información sobre la numeración de puertos serie. Si se omite, se conectará al puerto serie 1.
Si tienes problemas para conectarte con un cliente SSH de terceros, puedes ejecutar el comando
gcloud compute connect-to-serial-port
con la opción de línea de comandos--dry-run
para ver el comando SSH que se habría ejecutado en tu nombre. Después, puedes comparar las opciones con el comando que estés usando.Validar conexiones de clientes SSH de terceros
Cuando usas un cliente SSH de terceros que no es la CLI de Google Cloud, te recomendamos que verifiques que estás protegido frente a ataques de suplantación de identidad o de intermediario comprobando la clave de host SSH del puerto serie de Google. Para configurar tu sistema de forma que compruebe la clave de host SSH, sigue estos pasos:
Descarga la clave del host SSH de la consola en serie que vayas a usar:
En el caso de las conexiones regionales, la clave de host SSH de una región se puede encontrar en
https://www.gstatic.com/vm_serial_port_public_keys/REGION/REGION.pub
Para las conexiones globales, descarga la clave de host SSH del puerto serie de Google.
Abre el archivo de hosts conocidos, que suele estar en
~/.ssh/known_hosts
.Añade el contenido de la clave de host SSH, con el nombre de host del servidor antepuesto a la clave. Por ejemplo, si la clave de servidor us-central1 contiene la línea
ssh-rsa AAAAB3NzaC1yc...
,~/.ssh/known_hosts
debería tener una línea como esta:[us-central1-ssh-serialport.googleapis.com]:9600 ssh-rsa AAAAB3NzaC1yc...
Por motivos de seguridad, Google puede cambiar ocasionalmente la clave de host SSH del puerto serie de Google. Si tu cliente no puede autenticar la clave del servidor, finaliza inmediatamente el intento de conexión y completa los pasos anteriores para descargar una nueva clave de host SSH de puerto serie de Google.
Si, después de actualizar la clave de host, sigues recibiendo un error de autenticación de host de tu cliente, detén los intentos de conexión con el puerto serie y ponte en contacto con el equipo de Asistencia de Google. No proporciones ninguna credencial a través de una conexión en la que se haya producido un error en la autenticación de host.
Desconectarse de la consola de serie
Para desconectarte de la consola serie, sigue las instrucciones del método que hayas usado para conectarte.
Consola
En la Google Cloud consola, desconéctate de la consola de serie haciendo lo siguiente:
- Cierra la ventana o la pestaña del navegador que contiene la conexión de la consola serie.
gcloud
En Google Cloud CLI, desconéctate de la consola serie haciendo lo siguiente:
- Pulsa la tecla
ENTER
. - Escribe
~.
(tilde seguida de un punto).
Otros clientes SSH
En otros clientes de SSH, desconéctate de la consola en serie haciendo lo siguiente:
- Pulsa la tecla
ENTER
. - Escribe
~.
(tilde seguida de un punto).
En la CLI de Google Cloud o mediante SSH, puedes descubrir otros comandos escribiendo
~?
. También puedes consultar la página del manual de SSH con el siguiente comando:man ssh
No intentes desconectarte con ninguno de los siguientes métodos:
La combinación de teclas
CTRL+ALT+DELETE
u otras combinaciones similares. Esto no funciona porque la consola serie no reconoce las combinaciones de teclas del teclado de PC.El comando
exit
ologout
no funciona porque el invitado no tiene información sobre ninguna conexión de red o de módem. Al usar este comando, la consola se cierra y se vuelve a abrir, y sigues conectado a la sesión. Si quieres habilitar los comandosexit
ylogout
en tu sesión, puedes hacerlo activando la opciónon-dtr-low
.
Conectarse a una consola de serie con una petición de inicio de sesión
Si estás intentando solucionar un problema con una VM que se ha iniciado por completo o un problema que se produce después de que la VM haya superado el modo de un solo usuario, es posible que se te pida información de inicio de sesión al intentar acceder a la consola en serie.
De forma predeterminada, las imágenes del sistema Linux proporcionadas por Google no están configuradas para permitir inicios de sesión basados en contraseñas para usuarios locales. Sin embargo, las imágenes de Windows proporcionadas por Google están configuradas para permitir inicios de sesión basados en contraseñas para usuarios locales.
Si tu máquina virtual ejecuta una imagen preconfigurada con inicios de sesión en el puerto serie, debes configurar una contraseña local en la máquina virtual para poder iniciar sesión en la consola en serie si se te solicita. Puedes configurar una contraseña local después de conectarte a la VM o mediante una secuencia de comandos de inicio.
Configurar una contraseña local mediante una secuencia de comandos de inicio
Puedes usar una secuencia de comandos de inicio para configurar una contraseña local que te permita conectarte a la consola serie durante la creación de la VM o después.
Para configurar una contraseña local en una VM, selecciona una de las siguientes opciones:
Linux
En la consola de Google Cloud , ve a la página Instancias de VM.
En la columna Nombre, haz clic en el nombre de la VM a la que quieras añadir una contraseña local.
Se abrirá la página de detalles de la VM.
Haz clic en
Editar.Se abrirá la página para editar los detalles de la VM.
En la sección Metadatos > Automatización, haga lo siguiente:
Si la VM tiene una secuencia de comandos de inicio, elimínala y guárdala en un lugar seguro.
Añade la siguiente secuencia de comandos de inicio:
#!/bin/bash useradd USERNAME echo 'USERNAME:PASSWORD' | chpasswd usermod -aG google-sudoers USERNAME
Haz los cambios siguientes:
USERNAME
: el nombre de usuario que quieras añadir.PASSWORD
: la contraseña del nombre de usuario. Como algunos sistemas operativos requieren una longitud y una complejidad mínimas para las contraseñas, especifica una contraseña de la siguiente manera:Usa al menos 12 caracteres.
Usa una combinación de letras mayúsculas y minúsculas, números y símbolos.
Haz clic en Guardar.
Se abrirá la página de detalles de la VM.
Haz clic en Cambiar.
Cuando se te solicite, introduce tus datos de inicio de sesión.
Windows
En la consola de Google Cloud , ve a la página Instancias de VM.
En la columna Nombre, haz clic en el nombre de la VM a la que quieras añadir una contraseña local.
Se abrirá la página de detalles de la VM.
Haz clic en
Editar.Se abrirá la página para editar los detalles de la VM.
En la sección Metadatos, haga lo siguiente:
Si la VM tiene una secuencia de comandos de inicio, guárdala en un lugar seguro y, a continuación, haz clic en
Eliminar elemento para eliminarla.Haz clic en Añadir elemento.
En el campo Key (Clave), introduce
windows-startup-script-cmd
.En el campo Valor, introduce la siguiente secuencia de comandos:
net user USERNAME PASSWORD /ADD /Y net localgroup administrators USERNAME /ADD
Haz los cambios siguientes:
USERNAME
: el nombre de usuario que quieras añadir.PASSWORD
: la contraseña del nombre de usuario. Como algunos sistemas operativos requieren una longitud y una complejidad mínimas para las contraseñas, especifica una contraseña de la siguiente manera:Usa al menos 12 caracteres.
Usa una combinación de letras mayúsculas y minúsculas, números y símbolos.
Haz clic en Guardar.
Se abrirá la página de detalles de la VM.
Haz clic en Cambiar.
Cuando se te solicite, introduce tus datos de inicio de sesión.
Una vez creado el usuario, sustituye la secuencia de comandos de inicio por la que has almacenado en esta sección.
Configurar una contraseña local con
passwd
en la VMEn las siguientes instrucciones se describe cómo configurar una contraseña local para un usuario en una VM de forma que pueda iniciar sesión en la consola serie de esa VM con la contraseña especificada.
Conéctate a la VM. Sustituye
instance-name
por el nombre de tu instancia.gcloud compute ssh instance-name
En la VM, crea una contraseña local con el siguiente comando. Esta acción establece una contraseña para el usuario con el que has iniciado sesión.
sudo passwd $(whoami)
Sigue las indicaciones para crear una contraseña.
A continuación, cierra sesión en la instancia y conéctate a la consola serie.
Introduce tus datos de inicio de sesión cuando se te solicite.
Configurar un inicio de sesión en otros puertos serie
Las peticiones de inicio de sesión están habilitadas en el puerto 1 de forma predeterminada en todas las imágenes públicas de Linux que usan la gestión de servicios
systemd
. En las imágenes de Windows, las peticiones de inicio de sesión están habilitadas en el puerto 2 de forma predeterminada y las gestiona el Administrador de dispositivos. Sin embargo, el puerto 1 a menudo se puede saturar con datos de registro y otra información que se imprime en el puerto. También puedes habilitar una petición de inicio de sesión en otro puerto, como el puerto 2 (ttyS1), ejecutando el siguiente comando en tu VM:Linux
En sistemas operativos Linux que usen
systemd
:Habilita el servicio temporalmente hasta el próximo reinicio:
sudo systemctl start serial-getty@ttyS1.service
Habilita el servicio de forma permanente a partir del próximo reinicio:
sudo systemctl enable serial-getty@ttyS1.service
Windows
En sistemas operativos Windows:
Abrir el símbolo del sistema como administrador
Cambia el puerto EMS de COM2 a COM1:
bcdedit /emssettings EMSPORT:1 EMSBAUDRATE:9600
Reiniciar la VM
Información sobre la numeración de puertos serie
Cada instancia de máquina virtual tiene cuatro puertos serie. Para mantener la coherencia con la API
getSerialPortOutput
, cada puerto se numera del 1 al 4. Linux y otros sistemas similares numeran sus puertos serie del 0 al 3. Por ejemplo, en muchas imágenes del sistema operativo, los dispositivos correspondientes son del/dev/ttyS0
al/dev/ttyS3
. Windows se refiere a los puertos serie comoCOM1
aCOM4
. Para conectarte a lo que Windows consideraCOM3
y Linux considerattyS2
, especificarías el puerto 3. Usa la siguiente tabla para saber a qué puerto quieres conectarte.Puertos serie de instancias de máquina virtual Puertos serie estándar de Linux Puertos COM de Windows 1
/dev/ttyS0
COM1
2
/dev/ttyS1
COM2
3
/dev/ttyS2
COM3
4
/dev/ttyS3
COM4
Ten en cuenta que muchas imágenes de Linux usan el puerto 1 (
/dev/ttyS0
) para registrar mensajes del kernel y de los programas del sistema.Envío de una pausa en serie
La función tecla Magic SysRq te permite realizar tareas de bajo nivel independientemente del estado del sistema. Por ejemplo, puedes sincronizar sistemas de archivos, reiniciar la instancia, finalizar procesos y desmontar sistemas de archivos con la función de clave Magic SysRq.
Para enviar un comando Magic SysRq mediante una interrupción de serie simulada, sigue estos pasos:
- Pulsa la tecla
ENTER
. - Escribe
~B
(tilde seguida deB
en mayúsculas). - Escribe el comando Magic SysRq.
Ver registros de auditoría de la consola serie
Compute Engine proporciona registros de auditoría para monitorizar quién se ha conectado y desconectado de la consola serie de una instancia. Para ver los registros, debes tener permisos para el visor de registros o ser lector o editor del proyecto.
- En la Google Cloud consola, ve a la página Explorador de registros.
- Despliega el menú y selecciona Instancia de VM de GCE.
- En la barra de búsqueda, escribe
ssh-serialport.googleapis.com
y pulsa Intro. - Aparecerá una lista de registros de auditoría. Los registros describen las conexiones y desconexiones de una consola serie. Amplía cualquiera de las entradas para obtener más información.
En cualquiera de los registros de auditoría, puedes hacer lo siguiente:
- Despliega la propiedad
protoPayload
. - Busca
methodName
para ver la actividad a la que se aplica este registro (una solicitud de conexión o desconexión). Por ejemplo, si este registro monitoriza una desconexión de la consola serie, el nombre del método sería"google.ssh-serialport.v1.disconnect"
. Del mismo modo, un registro de conexión diría"google.ssh-serialport.v1.connect"
. Se registra una entrada de registro de auditoría al principio y al final de cada sesión en la consola serie.
Hay diferentes propiedades de registro de auditoría para distintos tipos de registros. Por ejemplo, los registros de auditoría relacionados con las conexiones tienen propiedades específicas de los registros de conexión, mientras que los registros de auditoría de las desconexiones tienen su propio conjunto de propiedades. Hay determinadas propiedades de los registros de auditoría que también se comparten entre ambos tipos de registros.
Todos los registros de la consola serie
En la siguiente tabla se muestran las propiedades de los registros de auditoría y sus valores para todos los registros de la consola serie:
Propiedad Valor requestMetadata.callerIp
La dirección IP y el número de puerto desde los que se originó la conexión. serviceName
ssh-serialport.googleapis.com
resourceName
Cadena que contiene el ID de proyecto, la zona, el nombre de la instancia y el número de puerto serie para indicar a qué consola serie corresponde. Por ejemplo, projects/myproject/zones/us-east1-a/instances/example-instance/SerialPort/2
es el número de puerto 2, también conocido como COM2 o /dev/ttyS1, de la instanciaexample-instance
.resource.labels
Propiedades que identifican el ID de instancia, la zona y el ID de proyecto. timestamp
Marca de tiempo que indica cuándo ha empezado o terminado la sesión. severity
NOTICE
operation.id
Cadena de ID que identifica de forma única la sesión. Puedes usarla para asociar una entrada de desconexión con la entrada de conexión correspondiente. operation.producer
ssh-serialport.googleapis.com
Registros de conexión
En la siguiente tabla se muestran las propiedades de los registros de auditoría y sus valores específicos para los registros de conexión:
Propiedad Valor methodName
google.ssh-serialport.v1.connect
status.message
Connection succeeded.
request.serialConsoleOptions
Las opciones que se hayan especificado en la solicitud, incluido el número de puerto serie. request.@type
type.googleapis.com/google.compute.SerialConsoleSessionBegin
request.username
Nombre de usuario especificado en esta solicitud. Se usa para seleccionar la clave pública que se va a buscar. operation.first
TRUE
status.code
En las solicitudes de conexión correctas, el valor status.code
degoogle.rpc.Code.OK
indica que la operación se ha completado correctamente sin errores. Como el valor de enumeración de esta propiedad es0
, la propiedadstatus.code
no se muestra. Sin embargo, cualquier código que compruebe si el valor destatus.code
esgoogle.rpc.Code.OK
funcionará correctamente.Registros de desconexión
En la siguiente tabla se muestran las propiedades de los registros de auditoría y sus valores específicos para los registros de desconexión:
Propiedad Valor methodName
google.ssh-serialport.v1.disconnect
response.duration
Tiempo que ha durado la sesión, expresado en segundos. response.@type
type.googleapis.com/google.compute.SerialConsoleSessionEnd
operation.last
TRUE
Registros de conexiones fallidas
Cuando falla una conexión, Compute Engine crea una entrada de registro de auditoría. Un registro de conexión fallida es muy similar a una entrada de conexión correcta, pero tiene las siguientes propiedades para indicar que la conexión ha fallado.
Propiedad Valor severity
ERROR
status.code
El código de error canónico de la API de Google que mejor describe el error. Estos son los posibles códigos de error que pueden aparecer:
google.rpc.Code.INVALID_ARGUMENT
: No se ha podido establecer la conexión porque el cliente ha proporcionado un número de puerto no válido o ha intentado acceder a un canal desconocido. Consulta la lista de números de puerto válidos.google.rpc.Code.PERMISSION_DENIED
: No has habilitado la consola serie interactiva en el servidor de metadatos. Para obtener más información, consulta el artículo Habilitar el acceso interactivo en la consola en serie.google.rpcCode.UNAUTHENTICATED
: No se han encontrado claves SSH o no se ha encontrado ninguna clave SSH que coincida con esta instancia. Comprueba que te has autenticado en la instancia de VM.google.rpc.Code.UNKNOWN
: se ha producido un error desconocido con tu solicitud. Puedes ponerte en contacto con Google en el grupo de debate de GCE o enviar un informe de errores.
status.message
El mensaje legible por humanos de esta entrada. Inhabilitar el acceso a la consola en serie interactiva
Puedes inhabilitar el acceso a la consola serie interactiva cambiando los metadatos de la instancia o el proyecto específicos, o bien definiendo una política de organización que inhabilite el acceso a la consola serie interactiva de todas las instancias de VM de uno o varios proyectos que formen parte de la organización.
Inhabilitar la consola en serie interactiva en una instancia o un proyecto concretos
Los propietarios y editores de proyectos, así como los usuarios a los que se les haya concedido el rol
compute.instanceAdmin.v1
, pueden inhabilitar el acceso a la consola serie cambiando los metadatos de la instancia o el proyecto en cuestión. Al igual que para habilitar el acceso a la consola en serie, defina los metadatosserial-port-enable
enFALSE
:serial-port-enable=FALSE
Por ejemplo, con Google Cloud CLI, puedes aplicar estos metadatos a una instancia específica de la siguiente manera:
gcloud compute instances add-metadata instance-name \ --metadata=serial-port-enable=FALSE
Para aplicar los metadatos al proyecto, sigue estos pasos:
gcloud compute project-info add-metadata \ --metadata=serial-port-enable=FALSE
Inhabilitar el acceso a la consola en serie interactiva mediante la política de organización
Si se te ha asignado el rol
orgpolicy.policyAdmin
en la organización, puedes definir una política de la organización que impida el acceso interactivo a la consola en serie, independientemente de si el acceso interactivo a la consola en serie está habilitado en el servidor de metadatos. Una vez que se haya definido la política de la organización, esta anulará la clave de metadatosserial-port-enable
y ningún usuario de la organización o del proyecto podrá habilitar el acceso interactivo a la consola serie. De forma predeterminada, esta restricción se establece enFALSE
.La restricción para inhabilitar el acceso a la consola en serie interactiva es la siguiente:
compute.disableSerialPortAccess
Sigue estas instrucciones para definir esta política en la organización. Después de configurar una política, puede conceder exenciones por proyecto.
gcloud
Para definir la política con la CLI de Google Cloud, ejecuta el comando
resource-manager enable-enforce
. Sustituyeorganization-id
por tu ID de organización. Por ejemplo,1759840282
.gcloud resource-manager org-policies enable-enforce \ --organization organization-id compute.disableSerialPortAccess
REST
Para definir una política en la API, haz una solicitud
POST
a la siguiente URL. Sustituyeorganization-name
por el nombre de tu organización. Por ejemplo,organizations/1759840282
.POST https://cloudresourcemanager.googleapis.com/v1/organization-name:setOrgPolicy
El cuerpo de la solicitud debe contener un objeto
policy
con la siguiente restricción:"constraint": "constraints/compute.disableSerialPortAccess"
Por ejemplo:
{ "policy": { "booleanPolicy": { "enforced": TRUE }, "constraint": "constraints/compute.disableSerialPortAccess" } }
La política se aplica inmediatamente, por lo que los proyectos de la organización dejarán de permitir el acceso interactivo a la consola en serie.
Para inhabilitar temporalmente la política, usa el comando
disable-enforce
:gcloud resource-manager org-policies disable-enforce \ --organization organization-id compute.disableSerialPortAccess
También puede enviar una solicitud a la API en la que el cuerpo de la solicitud asigne el valor
FALSE
al parámetroenforced
:{ "policy": { "booleanPolicy": { "enforced": FALSE }, "constraint": "constraints/compute.disableSerialPortAccess" } }
Definir la política de la organización a nivel de proyecto
Puedes definir la misma política de organización en cada proyecto. De esta forma, se anula el ajuste a nivel de organización.
gcloud
Para desactivar la aplicación de esta política en un proyecto específico. Sustituye
project-id
por el ID de tu proyecto.gcloud resource-manager org-policies disable-enforce \ --project project-id compute.disableSerialPortAccess
Para activar la aplicación de esta política, usa el comando
enable-enforce
con los mismos valores.REST
En la API, haz una solicitud
POST
a la siguiente URL para habilitar el acceso interactivo a la consola serie del proyecto. Sustituyeproject-id
por el ID del proyecto:POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setOrgPolicy
El cuerpo de la solicitud debe contener un objeto
policy
con la siguiente restricción:"constraint": "constraints/compute.disableSerialPortAccess"
Por ejemplo:
{ "policy": { "booleanPolicy": { "enforced": FALSE }, "constraint": "constraints/compute.disableSerialPortAccess" } }
Sugerencias y trucos
Si tienes problemas para conectarte con un cliente SSH estándar, pero
gcloud compute connect-to-serial-port
se conecta correctamente, puede ser útil ejecutargcloud compute connect-to-serial-port
con la opción de línea de comandos--dry-run
para ver el comando SSH que habría ejecutado en tu nombre y comparar las opciones con el comando que estás usando.Si usas una VM de Windows con OS Login habilitado y aparece un error
UNAUTHENTICATED
, comprueba que tus claves SSH públicas se hayan publicado en los metadatos de tu proyecto o instancia. Para obtener más información, consulta Gestionar claves SSH en metadatos.Al definir la tasa de bits, también conocida como tasa de baudios, puedes definir cualquier tasa de bits que quieras, como
stty 9600
, pero la función normalmente fuerza la tasa efectiva a 115.200 bps (aproximadamente 11,5 kB/s). Esto se debe a que muchas imágenes públicas tienen de forma predeterminada tasas de bits lentas, como 9600 en la consola serie, y se iniciarían lentamente.Algunas imágenes del SO tienen valores predeterminados poco prácticos en el puerto serie. Por ejemplo, en CentOS 7, el valor predeterminado de
stty icrnl
para la tecla Intro en la consola es enviar unCR
, también conocido como^M
. Es posible que el shell de bash lo oculte hasta que intentes definir una contraseña, momento en el que te preguntarás por qué parece que se ha quedado bloqueado en la peticiónpassword:
.Algunas imágenes públicas tienen claves de control de trabajos que están inhabilitadas de forma predeterminada si conectas un shell a un puerto de determinadas formas. Algunos ejemplos de estas claves son
^Z
y^C
. El comandosetsid
puede solucionar este problema. De lo contrario, si ves un mensaje dejob control is disabled in this shell
, ten cuidado de no ejecutar comandos que tengas que interrumpir.Puede ser útil indicar al sistema el tamaño de la ventana que estás usando para que bash y los editores puedan gestionarla correctamente. De lo contrario, es posible que se produzca un comportamiento extraño en la pantalla, ya que bash o los editores intentan manipular la pantalla basándose en suposiciones incorrectas sobre el número de filas y columnas disponibles. Usa el comando
stty rows Y cols X
y la marcastty -a
para ver cuál es el ajuste. Por ejemplo:stty rows 60 cols 120
(si tu ventana es de 120 caracteres por 60 líneas).Por ejemplo, si te conectas mediante SSH de la máquina A a la máquina B y, después, a la máquina C, creando una sesión SSH anidada, y quieres usar comandos de tilde (~) para desconectarte o enviar una señal de interrupción en serie, tendrás que añadir suficientes caracteres de tilde adicionales al comando para llegar al cliente SSH correcto. El cliente SSH del equipo A interpreta un comando que va después de una sola virgulilla. El cliente del equipo B interpreta un comando que va después de dos virgulillas consecutivas (Intro~~), y así sucesivamente. Solo tienes que pulsar Intro una vez, ya que se transmite hasta el destino SSH más interno. Esto se aplica a cualquier uso de clientes SSH que proporcionen la función de escape con tilde.
Si no recuerdas cuántas tildes necesitas, pulsa la tecla Intro y, a continuación, escribe tildes de una en una hasta que la instancia devuelva la tilde. Este eco indica que has llegado al final de la cadena y que ahora sabes que, para enviar un comando de tilde al cliente SSH más anidado, necesitas una tilde menos que el número de tildes que hayas escrito.
Opciones avanzadas
También puedes usar las siguientes opciones avanzadas con el puerto serie.
Controlar el número máximo de conexiones
Puedes definir la propiedad
max-connections
para controlar cuántas conexiones simultáneas se pueden establecer con este puerto serie a la vez. El número predeterminado y máximo de conexiones es 5. Por ejemplo:gcloud compute connect-to-serial-port instance-name \ --port port-number \ --extra-args max-connections=3
ssh -i private-ssh-key-file -p 9600 project-id.zone.instance-name.username.max-connections=3@ssh-serialport.googleapis.com
Configurar las opciones de repetición
De forma predeterminada, cada vez que te conectes a la consola en serie, recibirás una repetición de las últimas 10 líneas de datos, independientemente de si otro cliente SSH ha visto esas 10 líneas. Puedes cambiar este ajuste y controlar cuántas líneas se devuelven y cuáles se devuelven configurando las siguientes opciones:
replay-lines=N
: asigna aN
el número de líneas que quieras que se repitan. Por ejemplo, siN
es 50, se incluirán las últimas 50 líneas de la salida de la consola.replay-bytes=N
: reproduce losN
bytes más recientes. También puedes definirN
comonew
, lo que reproduce toda la salida que aún no se ha enviado a ningún cliente.replay-from=N
: vuelve a reproducir la salida a partir de un índice de bytes absoluto que proporciones. Puedes obtener el índice de bytes actual de la salida de la consola serie haciendo una solicitudgetSerialPortOutput
. Si definesreplay-from
, se ignorarán todas las demás opciones de repetición.
Con la CLI de Google Cloud, añade lo siguiente al comando
connect-to-serial-port
, dondeN
es el número de líneas especificado (o bytes o índice de bytes absoluto, según la opción de reproducción que selecciones):--extra-args replay-lines=N
Si utilizas un cliente SSH de terceros, proporciona esta opción en tu comando SSH:
ssh -i private-ssh-key-file -p 9600 myproject.us-central1-f.example-instance.jane.port=3.replay-lines=N@ssh-serialport.googleapis.com
También puedes usar una combinación de estas opciones. Por ejemplo:
replay-lines=N
yreplay-bytes=new
- Reproduce el número de líneas especificado O reproduce toda la salida que no se haya enviado previamente a ningún cliente, lo que sea mayor. El primer cliente que se conecte con esta combinación de marcas verá toda la salida que se haya enviado al puerto serie, y los clientes que se conecten posteriormente solo verán las últimas
N
líneas. Ejemplos:
gcloud compute connect-to-serial-port instance-name--port port-number --extra-args replay-lines=N,replay-bytes=new
ssh -i private-ssh-key-file -p 9600 project-id.zone.instance-name.username.replay-lines=N.replay-bytes=new@ssh-serialport.googleapis.com
replay-lines=N
yreplay-bytes=M
- Reproduce hasta el número de líneas o bytes que se describen en estas marcas, sin superarlo, lo que sea menor. Esta opción no reproducirá más de
N
oM
bytes.
gcloud compute connect-to-serial-port instance-name--port port-number --extra-args replay-lines=N,replay-bytes=M
ssh -i private-ssh-key-file -p 9600 project-id.zone.instance-name.username.replay-lines=N.replay-bytes=M@ssh-serialport.googleapis.com
Gestionar la salida descartada
Los últimos 1 MiB de salida de cada puerto serie están siempre disponibles y, por lo general, tu cliente SSH no debería perder ninguna salida del puerto serie. Si, por algún motivo, tu cliente SSH deja de aceptar resultados durante un periodo, pero no se desconecta, y se generan más de 1 MiB de datos nuevos, es posible que tu cliente SSH no reciba algunos resultados. Si tu cliente SSH no acepta datos con la suficiente rapidez como para seguir el ritmo de la salida del puerto de la consola serie, puedes definir la propiedad
on-dropped-output
para determinar cómo se comporta la consola.Define cualquiera de las siguientes opciones aplicables con esta propiedad:
insert-stderr-note
: inserta una nota en elstderr
del cliente SSH que indique que se ha descartado la salida. Es la opción predeterminada.ignore
: elimina la salida en silencio y no hace nada.disconnect
: detiene la conexión.
Por ejemplo:
gcloud compute connect-to-serial-port instance-name \ --port port-number \ --extra-args on-dropped-output=ignore
ssh -i private-ssh-key-file -p 9600 project-id.zone.instance-name.username.on-dropped-output=ignore@ssh-serialport.googleapis.com
Habilitar la desconexión mediante comandos de salida o cierre de sesión
Puedes habilitar la desconexión en los comandos de salida o cierre de sesión configurando la propiedad
on-dtr-low
endisconnect
al conectarte a la consola serie.En Google Cloud CLI, añade la siguiente marca al comando
connect-to-serial-port
:--extra-args on-dtr-low=disconnect
Si utilizas un cliente SSH de terceros, proporciona esta opción en tu comando SSH:
ssh -i private-ssh-key-file -p 9600 myproject.us-central1-f.example-instance.jane.port=3.on-dtr-low=disconnect@ssh-serialport.googleapis.com
Si habilitas la opción
disconnect
, es posible que tu instancia se desconecte una o varias veces al reiniciarla, ya que el sistema operativo restablece los puertos serie durante el inicio.El valor predeterminado de la opción
on-dtr-low
esnone
. Si usas el ajuste predeterminadonone
, puedes reiniciar tu instancia sin que se desconecte de la consola serie, pero la consola no se desconectará de forma normal, por ejemplo, con los comandosexit
ologout
, o con combinaciones de teclas normales como Ctrl+D.Siguientes pasos
getSerialPortOutput
API.- Consulta cómo conservar y ver la salida del puerto serie incluso después de eliminar una instancia de VM.
- Consulta más consejos para solucionar problemas.
- Consulta más información sobre cómo aplicar metadatos.
- Consulta información sobre las claves SSH.
A menos que se indique lo contrario, el contenido de esta página está sujeto a la licencia Reconocimiento 4.0 de Creative Commons y las muestras de código están sujetas a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio web de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-09-11 (UTC).
-