Esta página 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, en el sentido de que la entrada y salida están completamente en modo texto y no hay interfaz gráfica ni soporte para mouse. El sistema operativo, el BIOS y otras entidades a nivel del sistema de la instancia a menudo escriben resultados en los puertos serie y pueden aceptar entradas como comandos o respuestas a mensajes. Normalmente, estas entidades a nivel de sistema utilizan el primer puerto serie (puerto 1) y el puerto serie 1 a menudo se denomina consola serie.
Si solo necesita ver la salida del puerto serie sin emitir ningún comando a la consola serie, puede llamar al método getSerialPortOutput
o usar Cloud Logging para leer la información que su instancia ha escrito en su puerto serie; consulte Visualización de registros del puerto serie . Sin embargo, si tiene problemas para acceder a su instancia a través de SSH o necesita solucionar problemas de una instancia que no está completamente iniciada, puede habilitar el acceso interactivo a la consola serie, que le permite conectarse e interactuar con cualquiera de los puertos serie de su instancia. Por ejemplo, puede ejecutar comandos directamente y responder a indicaciones en el puerto serie.
Cuando habilita o deshabilita el puerto serie, puede usar cualquier valor booleano aceptado por el servidor de metadatos. Para obtener más información, consulte Valores booleanos .
Antes de comenzar
- Si aún no lo has hecho, configura la autenticación. La autenticación es el proceso mediante el cual se verifica su identidad para acceder a Google Cloud servicios y API. Para ejecutar código o muestras 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
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
- En la consola de Google Cloud, vaya a la página Metadatos .
- Haga clic en Editar para editar las entradas de metadatos.
- Agregue una nueva entrada que utilice la clave serial-port-enable y el valor TRUE .
- Guarde sus cambios.
- En la consola de Google Cloud, vaya a la página de instancias de VM .
- Haga clic en la instancia para la que desea habilitar el acceso.
- Haga clic en Editar .
- En la sección Acceso remoto , active la casilla Habilitar conexión a puertos serie .
- Guarde sus cambios.
- En la consola de Google Cloud, vaya a la página de instancias de VM .
- Haga clic en la instancia a la que desea conectarse.
- En Acceso remoto , haga clic en Conectar a la consola serie para conectarse al puerto predeterminado (puerto 1).
- Si desea conectarse a otro puerto serie, haga clic en la flecha hacia abajo junto al botón Conectar a la consola serie y cambie el número de puerto en consecuencia.
- Para instancias de Windows, abra el menú desplegable junto al botón y conéctese al puerto 2 para acceder a la consola serie.
-
VM_NAME
: el nombre de la VM a cuya consola serie desea conectarse. PORT_NUMBER
: el número de puerto al que desea conectarse. Para máquinas virtuales Linux, use1
, para máquinas virtuales Windows, use2
. Para obtener más información sobre los números de puerto, consulte Comprender la numeración de puertos serie .Para conectarse a una máquina virtual Linux:
ssh -i PRIVATE_SSH_KEY_FILE -p 9600 PROJECT_ID.ZONE.VM_NAME.USERNAME.OPTIONS@REGION-ssh-serialport.googleapis.com
Para conectarse a una máquina virtual Windows:
ssh -i PRIVATE_SSH_KEY_FILE -p 9600 PROJECT_ID.ZONE.VM_NAME.USERNAME.OPTIONS.port=2@REGION-ssh-serialport.googleapis.com
-
PRIVATE_SSH_KEY_FILE
: la clave SSH privada para la instancia. -
PROJECT_ID
: el ID del proyecto para esta instancia de VM. -
ZONE
: La zona de la instancia de VM. -
REGION
: La región de la instancia de VM. -
VM_NAME
: el nombre de la instancia de VM. -
USERNAME
: El nombre de usuario que está utilizando para conectarse a su instancia. Normalmente, este es el nombre de usuario en su máquina local. -
OPTIONS
: Opciones adicionales que puede especificar para esta conexión. Por ejemplo, puede especificar un determinado puerto serie y especificar cualquier opción avanzada . El número de puerto puede ser del 1 al 4, inclusive. Para obtener más información sobre los números de puerto, consulte Comprender la numeración de puertos serie . Si se omite, se conectará al puerto serie 1. Descargue la clave de host SSH para la consola serie que utilizará:
Para conexiones regionales, la clave de host SSH para una región se puede encontrar en
https://www.gstatic.com/vm_serial_port_public_keys/ REGION / REGION .pub
Para conexiones globales, descargue la clave de host SSH del puerto serie de Google
Abra su archivo de hosts conocidos, generalmente ubicado en
~/.ssh/known_hosts
.Agregue el contenido de la clave de host SSH, con el nombre de host del servidor antepuesto a la clave. Por ejemplo, si la clave del servidor us-central1 contiene la línea
ssh-rsa AAAAB3NzaC1yc...
, entonces~/.ssh/known_hosts
debería tener una línea como esta:[us-central1-ssh-serialport.googleapis.com]:9600 ssh-rsa AAAAB3NzaC1yc...
- Presione la tecla
ENTER
. - Escribe
~.
(tilde, seguida de un punto). La combinación de teclas
CTRL+ALT+DELETE
u otras combinaciones similares. Esto no funciona porque la consola serie no reconoce las combinaciones de teclado de la PC.El comando
exit
ologout
no funciona porque el invitado no conoce ninguna conexión de red o módem. El uso de este comando hace que la consola se cierre y luego se vuelva a abrir, y usted permanece conectado a la sesión. Si desea habilitar los comandosexit
ylogout
para su sesión, puede habilitarlos configurando la opciónon-dtr-low
.En la consola de Google Cloud, vaya a la página de instancias de VM .
En la columna Nombre , haga clic en el nombre de la VM para la que desea agregar una contraseña local.
Se abre la página de detalles de la VM.
Haga clic en
Editar .Se abre la página para editar los detalles de la VM.
En la sección Metadatos > Automatización , haga lo siguiente:
Si la VM tiene un script de inicio existente, elimínelo y guárdelo en un lugar seguro.
Agregue el siguiente script de inicio:
#!/bin/bash useradd USERNAME echo 'USERNAME:PASSWORD' | chpasswd usermod -aG google-sudoers USERNAME
Reemplace lo siguiente:
USERNAME
: el nombre de usuario que desea agregar.PASSWORD
: la contraseña del nombre de usuario. Como algunos sistemas operativos requieren una longitud y complejidad mínimas de contraseña, especifique una contraseña de la siguiente manera:Utilice al menos 12 caracteres.
Utilice una combinación de letras mayúsculas y minúsculas, números y símbolos.
Haga clic en Guardar .
Se abre la página de detalles de la VM.
Haga clic en Restablecer .
Cuando se le solicite, ingrese su información de inicio de sesión.
En la consola de Google Cloud, vaya a la página de instancias de VM .
En la columna Nombre , haga clic en el nombre de la VM para la que desea agregar una contraseña local.
Se abre la página de detalles de la VM.
Haga clic en
Editar .Se abre la página para editar los detalles de la VM.
En la sección Metadatos , haga lo siguiente:
Si la máquina virtual tiene un script de inicio existente, guárdelo en un lugar seguro y luego, para eliminarlo, haga clic en
Eliminar elemento .Haga clic en Agregar elemento .
En el campo Clave , ingrese
windows-startup-script-cmd
.En el campo Valor , ingrese el siguiente script:
net user USERNAME PASSWORD /ADD /Y net localgroup administrators USERNAME /ADD
Reemplace lo siguiente:
USERNAME
: el nombre de usuario que desea agregar.PASSWORD
: la contraseña del nombre de usuario. Como algunos sistemas operativos requieren una longitud y complejidad mínimas de contraseña, especifique una contraseña de la siguiente manera:Utilice al menos 12 caracteres.
Utilice una combinación de letras mayúsculas y minúsculas, números y símbolos.
Haga clic en Guardar .
Se abre la página de detalles de la VM.
Haga clic en Restablecer .
Cuando se le solicite, ingrese su información de inicio de sesión.
Conéctese a la máquina virtual. Reemplace
instance-name
con el nombre de su instancia.gcloud compute ssh instance-name
En la VM, cree una contraseña local con el siguiente comando. Esto establece una contraseña para el usuario con el que ha iniciado sesión actualmente.
sudo passwd $(whoami)
Siga las instrucciones para crear una contraseña.
A continuación, cierre sesión en la instancia y conéctese a la consola serie .
Ingrese su información de inicio de sesión cuando se le solicite.
Habilite el servicio temporalmente hasta el próximo reinicio:
sudo systemctl start serial-getty@ttyS1.service
Habilite el servicio permanentemente, comenzando con el próximo reinicio:
sudo systemctl enable serial-getty@ttyS1.service
Cree un nuevo archivo
/etc/init/ttyS1.conf
para reflejarttyS1
copiando y modificando un archivottyS0.conf
existente. Por ejemplo:En Ubuntu 14.04:
sudo sh -c "sed -e s/ttyS0/ttyS1/g < /etc/init/ttyS0.conf > /etc/init/ttyS1.conf"
En RHEL 6.8 y CentOS 6.8
sudo sh -c "sed -ne '/^# # ttyS0/,/^# exec/p' < /etc/init/serial.conf | sed -e 's/ttyS0/ttyS1/g' -e 's/^# *//' > /etc/init/ttyS1.conf"
Comience en un mensaje de inicio de sesión en
ttyS1
sin reiniciar:sudo start ttyS1
- Presione la tecla
ENTER
. - Escriba
~B
(tilde, seguida deB
mayúscula). - Escriba el comando Magic SysRq.
- En la consola de Google Cloud, vaya a la página Explorador de registros .
- Expanda el menú desplegable y seleccione Instancia de VM de GCE .
- En la barra de búsqueda, escribe
ssh-serialport.googleapis.com
y presiona Enter . - Aparece una lista de registros de auditoría. Los registros describen conexiones y desconexiones desde una consola serie. Expanda cualquiera de las entradas para obtener más información.
- Expanda la propiedad
protoPayload
. - Busque
methodName
para ver la actividad a la que se aplica este registro (ya sea una solicitud de conexión o desconexión). Por ejemplo, si este registro rastrea una desconexión de la consola serie, el nombre del método diría"google.ssh-serialport.v1.disconnect"
. De manera similar, un registro de conexión diría"google.ssh-serialport.v1.connect"
. Se registra una entrada del registro de auditoría al principio y al final de cada sesión en la consola serie. -
google.rpc.Code.INVALID_ARGUMENT
: La conexión falló porque el cliente proporcionó un número de puerto no válido o intentó acceder a un canal desconocido. Consulte la lista de números de puerto válidos . -
google.rpc.Code.PERMISSION_DENIED
: No ha habilitado la consola serie interactiva en el servidor de metadatos. Para obtener más información, consulte Habilitación del acceso interactivo en la consola serie . -
google.rpcCode.UNAUTHENTICATED
: No se encontraron claves SSH o no se encontró ninguna clave SSH coincidente para esta instancia. Compruebe que esté autenticado en la instancia de VM . -
google.rpc.Code.UNKNOWN
: Hubo un error desconocido con su solicitud. Puede comunicarse con Google en el grupo de discusión gce o presentar un informe de error . Si tienes problemas para conectarte usando un cliente SSH estándar, pero
gcloud compute connect-to-serial-port
se conecta correctamente, podría 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 se habría ejecutado en tu nombre y comparar las opciones con el comando que estás usando.Si está utilizando una máquina virtual Windows con el inicio de sesión en el sistema operativo habilitado y encuentra un error
UNAUTHENTICATED
, verifique que sus claves SSH públicas se hayan publicado en los metadatos de su proyecto o instancia. Para obtener más información, consulte Administrar claves SSH en metadatos .Al configurar la velocidad de bits, también conocida como velocidad en baudios, puede establecer cualquier velocidad de bits que desee, como
stty 9600
, pero la función normalmente fuerza la velocidad efectiva a 115.200 bps (~11,5 kB/seg). Esto se debe a que muchas imágenes públicas tienen por defecto velocidades de bits lentas, como 9.600 en la consola serie, y se inician lentamente.Algunas imágenes del sistema operativo tienen valores predeterminados inconvenientes en el puerto serie. Por ejemplo, en CentOS 7, el valor predeterminado de
stty icrnl
para la tecla Enter en la consola es enviar unCR
, también conocido como^M
. El shell bash puede enmascarar esto hasta que intente establecer una contraseña, momento en el cual puede preguntarse por qué parece atascado en elpassword:
Algunas imágenes públicas tienen claves de control de trabajos que están deshabilitadas de forma predeterminada si conecta un shell a un puerto de determinadas maneras. Algunos ejemplos de estas claves incluyen
^Z
y^C
. El comandosetsid
podría solucionar este problema. De lo contrario, si ve que unjob control is disabled in this shell
, tenga cuidado de no ejecutar comandos que necesitará interrumpir.Puede resultarle útil indicarle al sistema el tamaño de la ventana que está utilizando, para que bash y los editores puedan administrarla correctamente. De lo contrario, es posible que experimente un comportamiento de visualización extraño porque bash o los editores intentan manipular la visualización basándose en suposiciones incorrectas sobre la cantidad de filas y columnas disponibles. Utilice el comando
stty rows Y cols X
y el indicadorstty -a
para ver cuál es la configuración. Por ejemplo:stty rows 60 cols 120
(si su ventana tiene 120 caracteres por 60 líneas).Si, por ejemplo, se conecta usando SSH desde la máquina A a la máquina B, y luego a la máquina C, creando una sesión SSH anidada, y desea usar comandos de tilde (~) para desconectarse o enviar una señal de interrupción en serie, necesitará agregar suficientes caracteres de tilde adicionales al comando para llegar al cliente SSH correcto. El cliente SSH en la máquina A interpreta un comando que sigue a una sola tilde; el cliente en la máquina B interpreta un comando que sigue a dos tildes consecutivas (Intro~~), y así sucesivamente. Solo necesita presionar Enter una vez porque se pasa hasta el destino SSH más interno. Esto es válido para cualquier uso de clientes SSH que proporcionen la función de escape de tilde.
Si pierde la cuenta de cuántos caracteres de tilde necesita, presione la tecla Intro y luego escriba los caracteres de tilde uno a la vez hasta que la instancia repita la tilde. Este eco indica que ha llegado al final de la cadena y ahora sabe que para enviar un comando de tilde al cliente SSH más anidado, necesita una tilde menos que todas las tildes que haya escrito.
-
replay-lines=N
: estableceN
en el número de líneas que deseas reproducir. Por ejemplo, siN
es 50, se incluyen las últimas 50 líneas de la salida de la consola. -
replay-bytes=N
: reproduce losN
bytes más recientes. También puede establecerN
ennew
que repite todos los resultados que aún no se han enviado a ningún cliente. -
replay-from=N
: Replays Salida que comienza desde un índice de bytes absoluto que usted proporciona. Puede obtener el índice de bytes actual de la salida de la consola serie realizando una solicitudgetSerialPortOutput
. Si establecereplay-from
, todas las demás opciones de repetición se ignoran. -
replay-lines=N
yreplay-bytes=new
- Reproducir el número especificado de líneas o reproducir toda la salida que no se envió previamente a ningún cliente, lo que sea mayor. El primer cliente en conectarse con esta combinación de bandera verá toda la salida que se ha enviado al puerto serie, y los clientes que se conectan de manera subsuficiente solo verán las últimas líneas
N
. Ejemplos: replay-lines=N
yreplay-bytes=M
- Reproducir líneas hasta, pero no más, el número de líneas o bytes descritos por estas banderas, lo que sea menos. Esta opción no reproducirá más de
N
oM
bytes. -
insert-stderr-note
: inserte una nota en elstderr
del cliente SSH que indica que se eliminó la salida. Esta es la opción predeterminada. -
ignore
: Silenciosamente deja deja la salida y no hace nada. -
disconnect
: detener la conexión. - Obtenga más información sobre la API
getSerialPortOutput
. - Aprenda cómo retener y ver la salida del puerto serie incluso después de eliminar una instancia de VM.
- Lea más consejos de solución de problemas .
- Obtenga más información sobre cómo aplicar metadatos .
- Aprenda sobre las teclas SSH .
REST
Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
Para obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud .
Habilitar el acceso interactivo en la consola serie
Habilite el acceso interactivo a la consola serie para instancias de VM individuales o para un proyecto completo.
Habilitar el acceso a un proyecto
Habilitar el acceso a la consola serie interactiva en un proyecto permite el acceso a todas las instancias de VM que forman parte de ese proyecto.
De forma predeterminada, el acceso al puerto serie interactivo está deshabilitado. También puede desactivarlo explícitamente configurando la clave
serial-port-enable
enFALSE
. En cualquier caso, cualquier configuración por instancia anula la configuración a nivel de proyecto o la configuración predeterminada.Consola
nube de gcloud
Usando la CLI de Google Cloud, ingrese el comando
project-info add-metadata
de la siguiente manera:gcloud compute project-info add-metadata \ --metadata serial-port-enable=TRUE
DESCANSAR
En la API, realice una solicitud al
projects().setCommonInstanceMetadata
, proporcionando la claveserial-port-enable
con un valor deTRUE
:{ "fingerprint": "FikclA7UBC0=", "items": [ { "key": "serial-port-enable", "value": "TRUE" } ] }
Habilitar el acceso para una instancia de VM
Habilite el acceso a la consola serie interactiva para una instancia específica. Una configuración por instancia, si existe, anula cualquier configuración a nivel de proyecto. También puede deshabilitar el acceso para una instancia específica, incluso si el acceso está habilitado en el nivel del proyecto, configurando
serial-port-enable
enFALSE
, en lugar deTRUE
. De manera similar, puede habilitar el acceso para una o más instancias incluso si está deshabilitado para el proyecto, de manera explícita o predeterminada.Consola
nube de gcloud
Con la CLI de Google Cloud, ingrese el comando
instances add-metadata
y reemplaceinstance-name
con el nombre de su instancia.gcloud compute instances add-metadata instance-name \ --metadata serial-port-enable=TRUE
DESCANSAR
En la API, realice una solicitud al método
instances().setMetadata
con la claveserial-port-enable
y un valor deTRUE
: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 para una instancia básica
Para instancias bare metal, aumente la velocidad de bits, también conocida como velocidad en baudios, para la consola serie a 115.200 bps (~11,5 kB/seg). El uso de una velocidad más lenta da como resultado una salida de consola confusa o faltante.
La configuración del gestor de arranque varía según los sistemas operativos y las versiones del sistema operativo. Consulte la documentación del distribuidor del sistema operativo para obtener instrucciones.
Si modifica la velocidad de bits en la línea de comando para la sesión actual, use un comando similar al siguiente:
console=ttyS0,115200
Si modifica la configuración de GRUB, utilice un comando similar al siguiente:
serial --speed=115200
Asegúrese de actualizar la configuración real del gestor de arranque. Esto se puede hacer con
update-grub
,grub2-mkconfig
o un comando similar.Conexión a una consola serie
Compute Engine ofrece puertas de enlace de consola serie regionales para cada Google Cloudregión. Después de habilitar el acceso interactivo para la consola serie de una VM, puede conectarse a una consola serie regional.
La consola serie autentica a los usuarios con claves SSH . Específicamente, debe agregar su clave SSH pública a los metadatos del proyecto o instancia y almacenar su clave privada en la máquina local desde la que desea conectarse. La CLI de gcloud y la consola de Google Cloud agregan automáticamente claves SSH al proyecto por ti. Si está utilizando un cliente de terceros, es posible que deba agregar claves SSH manualmente.
Si está utilizando un cliente de terceros, también puede validar la conexión utilizando las claves de host de la consola serie . Cuando utiliza la CLI de Google Cloud para conectarse, la autenticación de la clave de host se realiza automáticamente en su nombre.
Consola
Para conectarse a la consola serie regional de una VM, haga lo siguiente:
nube de gcloud
Para conectarse a la consola serie regional de una VM, use el comando
gcloud compute connect-to-serial-port
:gcloud compute connect-to-serial-port VM_NAME
--port=PORT_NUMBERReemplace lo siguiente:
Otros clientes SSH
Puede conectarse a la consola serie de una instancia utilizando otros clientes SSH de terceros, siempre que el cliente le permita conectarse al puerto TCP 9600. Antes de conectarse, opcionalmente puede validar la conexión utilizando las claves de host de la consola serie .
Para conectarse a la consola serie regional de una VM, ejecute uno de los siguientes comandos, según el sistema operativo de su VM:
Reemplace lo siguiente:
Si tiene problemas para conectarse mediante un cliente SSH de terceros, puede 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 su nombre. Luego puedes comparar las opciones con el comando que estás usando.Validar conexiones de clientes SSH de terceros
Cuando utiliza un cliente SSH de terceros que no es la CLI de Google Cloud, puede asegurarse de estar protegido contra suplantaciones o ataques de intermediarios verificando la clave de host SSH del puerto serie de Google. Para configurar su sistema para verificar la clave de host SSH, complete los siguientes pasos:
Por razones de seguridad, Google puede cambiar ocasionalmente la clave de host SSH del puerto serie de Google. Si su cliente no puede autenticar la clave del servidor, finalice inmediatamente el intento de conexión y complete los pasos anteriores para descargar una nueva clave de host SSH del puerto serie de Google.
Si, después de actualizar la clave de host, continúa recibiendo un error de autenticación de host de su cliente, detenga los intentos de conectarse al puerto serie y comuníquese con el soporte técnico de Google. No proporcione ninguna credencial a través de una conexión donde la autenticación del host haya fallado.
Desconectarse de la consola serie
Para desconectarse de la consola serie:
Puedes descubrir otros comandos escribiendo
~?
o examinando la página de manual de SSH:man ssh
No intente desconectarse utilizando ninguno de los siguientes métodos:
Conexión a una consola serie con un mensaje de inicio de sesión
Si está intentando solucionar un problema con una máquina virtual que se inició por completo o intenta solucionar un problema que ocurre después de que la máquina virtual se inició más allá del modo de usuario único, es posible que se le solicite información de inicio de sesión cuando intente acceder a la consola 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ña 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ña para usuarios locales.
Si su VM ejecuta una imagen que está preconfigurada con inicios de sesión en el puerto serie, debe configurar una contraseña local en la VM para poder iniciar sesión en la consola serie, si se le solicita. Puede configurar una contraseña local después de conectarse a la VM o mediante un script de inicio.
Configurar una contraseña local usando un script de inicio
Puede utilizar una secuencia de comandos de inicio para configurar una contraseña local que le permita conectarse a la consola serie durante o después de la creación de la VM.
Para configurar una contraseña local en una VM existente, seleccione una de las siguientes opciones:
linux
ventanas
Una vez creado el usuario, reemplace el script de inicio con el script de inicio que almacenó en esta sección.
Configurar una contraseña local usando
passwd
en la VMLas siguientes instrucciones describen cómo configurar una contraseña local para un usuario en una VM para que el usuario pueda iniciar sesión en la consola serie de esa VM usando la contraseña especificada.
Configurar un inicio de sesión en otros puertos serie
Las solicitudes de inicio de sesión están habilitadas en el puerto 1 de forma predeterminada en la mayoría de los sistemas operativos Linux. Sin embargo, el puerto 1 a menudo puede verse saturado por el registro de datos y otra información que se imprime en el puerto. En su lugar, puede optar por habilitar un mensaje de inicio de sesión en otro puerto, como el puerto 2 (ttyS1), ejecutando uno de los siguientes comandos en su VM. Puede ver una lista de puertos disponibles para una máquina virtual en Descripción de la numeración de puertos serie .
La siguiente tabla enumera imágenes preconfiguradas con un inicio de sesión de consola serie y los puertos predeterminados.
Sistema operativo Puertos con un mensaje de inicio de sesión por defecto Gestión de servicios CentOS 6 1 upstart
CentOS 7 1 systemd
CoreOS 1 systemd
porque 1 systemd
Debian 8 1 systemd
Debian 9 1 systemd
OpenSUSE 13 1 systemd
Salto de OpenSUSE 1 systemd
RHEL 6 1 upstart
RHEL 7 1 systemd
SLES 11 1 sysvinit
SLES 12 1 systemd
ubuntu 14.04 1 upstart
ubuntu 16.04 1 systemd
ubuntu 17.04 1 systemd
Ubuntu 17.10 1 systemd
ventanas COM2 N / A Para habilitar las solicitudes de inicio de sesión en puertos serie adicionales, complete las siguientes instrucciones.
sistemad
Para sistemas operativos Linux que utilizan
systemd
:advenedizo
Para sistemas operativos Linux que utilizan
upstart
:sistemavinit
Para sistemas operativos Linux que usan
sysvinit
, ejecute el siguiente comando:sudo sed -i~ -e 's/^#T([01])/T\1/' /etc/inittab sudo telinit q
Comprender 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 está numerado del 1 al 4. Linux y otros sistemas similares numeran sus puertos serie del 0 al 3. Por ejemplo, en muchas imágenes de sistemas operativos, los dispositivos correspondientes son/dev/ttyS0
a/dev/ttyS3
. Windows se refiere a los puertos serie comoCOM1
aCOM4
. Para conectarse a lo que Windows consideraCOM3
y Linux considerattyS2
, deberá especificar el puerto 3. Utilice la siguiente tabla para ayudarle a determinar a qué puerto desea conectarse.Puertos serie de instancia 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
Tenga en cuenta que muchas imágenes de Linux utilizan el puerto 1 (
/dev/ttyS0
) para registrar mensajes del kernel y los programas del sistema.Enviando una pausa en serie
La función clave Magic SysRq le permite realizar tareas de bajo nivel independientemente del estado del sistema. Por ejemplo, puede sincronizar sistemas de archivos, reiniciar la instancia, finalizar procesos y desmontar sistemas de archivos utilizando la función clave Magic SysRq.
Para enviar un comando Magic SysRq usando una interrupción en serie simulada:
Ver registros de auditoría de la consola serie
Compute Engine proporciona registros de auditoría para rastrear quién se ha conectado y desconectado de la consola serie de una instancia. Para ver registros, debe tener permisos para el Visor de registros o ser un visor o editor de proyectos.
Para cualquiera de los registros de auditoría, puede:
Existen diferentes propiedades de registro de auditoría para diferentes tipos de registro. Por ejemplo, los registros de auditoría relacionados con conexiones tienen propiedades que son específicas de los registros de conexión, mientras que los registros de auditoría para desconexiones tienen su propio conjunto de propiedades. Hay determinadas propiedades del registro de auditoría que también se comparten entre ambos tipos de registro.
Todos los registros de la consola serie
La siguiente tabla proporciona las propiedades del registro 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 donde se originó la conexión. serviceName
ssh-serialport.googleapis.com
resourceName
Una cadena que contiene el ID del proyecto, la zona, el nombre de la instancia y el número de puerto serie para indicar a qué consola serie pertenece. Por ejemplo, projects/ myproject /zones/us-east1-a/instances/ example-instance /SerialPort/2
es el puerto número 2, también conocido como COM2 o /dev/ttyS1, para la instanciaexample-instance
.resource.labels
Propiedades que identifican el ID de instancia, la zona y el ID del proyecto. timestamp
Una marca de tiempo que indica cuándo comenzó o finalizó la sesión. severity
NOTICE
operation.id
Una cadena de identificación que identifica de forma única la sesión; puede utilizar esto para asociar una entrada de desconexión con la entrada de conexión correspondiente. operation.producer
ssh-serialport.googleapis.com
Registros de conexión
La siguiente tabla proporciona propiedades de registro de auditoría y sus valores específicos para registros de conexión:
Propiedad Valor methodName
google.ssh-serialport.v1.connect
status.message
Connection succeeded.
request.serialConsoleOptions
Cualquier opción que se haya especificado con la solicitud, incluido el número de puerto de serie. request.@type
type.googleapis.com/google.compute.SerialConsoleSessionBegin
request.username
El nombre de usuario especificado para esta solicitud. Esto se utiliza para seleccionar la clave pública que coincida. operation.first
TRUE
status.code
Para solicitudes de conexión exitosas, un valor de status.code
degoogle.rpc.Code.OK
indica que la operación se completó exitosamente sin errores. Debido a que el valor de enumeración para esta propiedad es0
, la propiedadstatus.code
no se muestra. Sin embargo, cualquier código que verifique un valor destatus.code
degoogle.rpc.Code.OK
funcionará como se esperaba.Registros de desconexión
La siguiente tabla proporciona propiedades de registro de auditoría y sus valores específicos para registros de desconexión:
Propiedad Valor methodName
google.ssh-serialport.v1.disconnect
response.duration
La cantidad de tiempo, en segundos, que duró la sesión. response.@type
type.googleapis.com/google.compute.SerialConsoleSessionEnd
operation.last
TRUE
Registros de conexión fallida
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 exitosa, pero tiene las siguientes propiedades para indicar una conexión fallida.
Propiedad Valor severity
ERROR
status.code
El código de error canónico de la API de Google que mejor describe el error. Los siguientes son posibles códigos de error que pueden aparecer:
status.message
El mensaje legible por humanos para esta entrada. Deshabilitar el acceso a la consola serial interactiva
Puede deshabilitar el acceso a la consola serie interactiva cambiando los metadatos en la instancia o proyecto específico, o configurando una Política de organización que deshabilite el acceso a la consola serie interactiva a todas las instancias de VM para uno o más proyectos que forman parte de la organización.
Deshabilitar la consola serie interactiva en una instancia o proyecto en particular
Los propietarios y editores de proyectos, así como los usuarios a los que se les ha otorgado la función
compute.instanceAdmin.v1
, pueden deshabilitar el acceso a la consola serie cambiando los metadatos en la instancia o proyecto en particular. De manera similar a habilitar el acceso a la consola serie , configure los metadatosserial-port-enable
enFALSE
:serial-port-enable=FALSE
Por ejemplo, usando la CLI de Google Cloud, puedes aplicar estos metadatos a una instancia específica de esta manera:
gcloud compute instances add-metadata instance-name \ --metadata=serial-port-enable=FALSE
Para aplicar los metadatos al proyecto:
gcloud compute project-info add-metadata \ --metadata=serial-port-enable=FALSE
Deshabilitar el acceso a la consola serial interactiva a través de la Política de la organización
Si se le ha otorgado el rol
orgpolicy.policyAdmin
en la organización, puede establecer una política de organización que impida el acceso interactivo a la consola serie, independientemente de si el acceso a la consola serie interactiva está habilitado en el servidor de metadatos. Una vez establecida la política de la organización, la política anula de manera efectiva la clave de metadatosserial-port-enable
y ningún usuario de la organización o proyecto puede habilitar el acceso a la consola serie interactiva. De forma predeterminada, esta restricción está establecida enFALSE
.La restricción para deshabilitar el acceso a la consola serie interactiva es la siguiente:
compute.disableSerialPortAccess
Complete las siguientes instrucciones para establecer esta política en la organización. Después de configurar una política, puede otorgar exenciones por proyecto.
nube de gcloud
Para configurar la política mediante la CLI de Google Cloud, ejecute el comando
resource-manager enable-enforce
. Reemplaceorganization-id
con el ID de su organización . Por ejemplo,1759840282
.gcloud resource-manager org-policies enable-enforce \ --organization organization-id compute.disableSerialPortAccess
DESCANSAR
Para establecer una política en la API, realice una solicitud
POST
a la siguiente URL. Reemplaceorganization-name
con el nombre de su 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 entra en vigor de inmediato, por lo que cualquier proyecto de la organización dejará de permitir inmediatamente el acceso interactivo a la consola serie.
Para deshabilitar temporalmente la política, use el comando
disable-enforce
:gcloud resource-manager org-policies disable-enforce \ --organization organization-id compute.disableSerialPortAccess
Alternativamente, puede realizar una solicitud API donde el cuerpo de la solicitud establece el parámetro
enforced
enFALSE
:{ "policy": { "booleanPolicy": { "enforced": FALSE }, "constraint": "constraints/compute.disableSerialPortAccess" } }
Establecer la política de la organización a nivel de proyecto.
Puede establecer la misma política organizativa para cada proyecto. Esto anula la configuración a nivel de organización.
nube de gcloud
Desactivar la aplicación de esta política para un proyecto específico. Reemplace
project-id
con su ID de proyecto.gcloud resource-manager org-policies disable-enforce \ --project project-id compute.disableSerialPortAccess
Puede activar la aplicación de esta política utilizando el comando
enable-enforce
con los mismos valores.DESCANSAR
En la API, realice una solicitud
POST
a la siguiente URL para habilitar el acceso a la consola serial interactiva para el proyecto, reemplazandoproject-id
con 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" } }
Consejos y trucos
Opciones avanzadas
También puede utilizar las siguientes opciones avanzadas con el puerto serie.
Controlar las conexiones máximas
Puede configurar la propiedad
max-connections
para controlar cuántas conexiones simultáneas se pueden realizar a 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 opciones de reproducción
De forma predeterminada, cada vez que se conecte a la consola serie, recibirá una repetición de las últimas 10 líneas de datos, independientemente de si las últimas 10 líneas han sido vistas por otro cliente SSH. Puede cambiar esta configuración y controlar cuántas y qué líneas se devuelven configurando las siguientes opciones:
Con la CLI de Google Cloud, agregue lo siguiente a su comando
connect-to-serial-port
, dondeN
es el número especificado de líneas (o bytes o índice de byte absoluto, dependiendo de la opción de reproducción que esté seleccionando):--extra-args replay-lines=N
Si está utilizando un cliente SSH de terceros, proporcione esta opción en su 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 puede usar una combinación de estas opciones. Por ejemplo:
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
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
Manejo de salida caída
El 1 MIB de salida más reciente para cada puerto serie siempre está disponible y, en general, su cliente SSH no debe perder ninguna salida del puerto serie. Si, por alguna razón, su cliente SSH deja de aceptar la salida por un período de tiempo pero no se desconecta, y se produce más de 1 MIB de nuevos datos, su cliente SSH podría perderse alguna salida. Cuando su cliente SSH no acepta datos lo suficientemente rápido como para mantenerse al día con la salida en el puerto de la consola serie, puede establecer la propiedad
on-dropped-output
para determinar cómo se comporta la consola.Establezca cualquiera de las siguientes opciones aplicables con esta propiedad:
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 usando los comandos de salida o de sesión
Puede habilitar la desconexión de los comandos de salida o cierre de sesión configurando la propiedad
on-dtr-low
paradisconnect
cuando se conecta a la consola serie.En la CLI de Google Cloud, agregue el siguiente indicador a su comando
connect-to-serial-port
:--extra-args on-dtr-low=disconnect
Si está utilizando un cliente SSH de terceros, proporcione esta opción en su 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
Habilitar la opción de
disconnect
puede hacer que su instancia se desconecte una o más veces cuando reinicia la instancia porque el sistema operativo restablece los puertos seriales mientras se inicia.La configuración predeterminada para la opción
on-dtr-low
esnone
. Si usa la configuración predeterminadanone
, puede reiniciar su instancia sin ser desconectado de la consola serie, pero la consola no se desconectará a través de medios normales como comandosexit
ologout
, o combinaciones de clave normales como Ctrl+D.¿Qué sigue?
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-04-17 (UTC).
-