Características de seguridad de Live ShareSecurity features of Live Share

Las sesiones de colaboración en Visual Studio Live Share son eficaces, ya que permiten que cualquier número de personas se unan en una sesión y edición colaborativa, depuración, etc.Collaboration sessions in Visual Studio Live Share are powerful in that they allow any number of people to join in a session and collaboratively edit, debug and more. Sin embargo, dado este nivel de acceso, indudablemente le interesarán las características de seguridad Live Share proporciona.However, given this level of access, you undoubtedly will be interested in the security features Live Share provides. En este artículo, proporcionaremos algunas recomendaciones y opciones para proteger su entorno según sea necesario.In this article, we'll provide some recommendations and options for securing your environment as needed.

Como con cualquier herramienta de colaboración, recuerde que solo debe compartir el código, el contenido y las aplicaciones con personas de confianza.As with any collaboration tool, remember that you should only share your code, content, and applications with people you trust.

ConectividadConnectivity

Al iniciar una sesión entre los equipos del mismo nivel, Live Share intenta establecer una conexión punto a punto, y solo si no es posible (por ejemplo, debido a firewalls o NAT), revierte al uso de una retransmisión en la nube.When initiating a session between peers, Live Share attempts to establish a peer-to-peer connection, and only if that isn't possible (e.g. due to firewalls/NATs), does it fall back to using a cloud relay. Sin embargo, en ambos tipos de conexión (P2P o Relay), todos los datos transmitidos entre pares son cifrados de un extremo a otro mediante el protocolo SSH.However, in both connection types (P2P or relay), all data transmitted between peers is end-to-end encrypted using the SSH protocol. En el caso de una conexión de retransmisión, el cifrado SSH se superpone a WebSockets cifrados con TLS.In the case of a relay connection, the SSH encryption is layered on top of TLS-encrypted WebSockets. Esto significa que Live Share no depende del servicio de retransmisión en la nube para la seguridad.This means that Live Share doesn't depend on the cloud relay service for security. Incluso si la retransmisión se ha puesto en peligro, no pudo descifrar ninguna de las Live Share comunicación.Even if the relay was compromised, it could not decrypt any of the Live Share communication.

El rol del servicio Live Share está limitado a la autenticación de usuario y la detección de sesión.The role of the Live Share service is limited to user authentication and session discovery. El propio servicio no almacena ni nunca tiene acceso al contenido de una sesión.The service itself does not store or ever have access any of the content of a session. Todo el contenido del usuario en Live Share se transmite a través de la sesión de SSH.All user content in Live Share is transmitted over the SSH session. Esto incluye código, terminales, servidores compartidos y cualquier otra característica de colaboración proporcionada por Live Share o extensiones que se basan en él.That includes code, terminals, shared servers, and any other collaboration features provided by Live Share or extensions that build on it.

Para obtener más información sobre la modificación de estos comportamientos y los requisitos de conectividad de Live Share, consulte requisitos de conectividad para Live share.To find out more about altering these behaviors and Live Share's connectivity requirements, see connectivity requirements for Live Share.

Cifrado de conexiónWire Encryption

El protocolo SSH usa un intercambio de claves Diffie-Hellman para establecer un secreto compartido para la sesión y se deriva de esa clave para el cifrado simétrico de AES.The SSH protocol uses a Diffie-Hellman key-exchange to establish a shared secret for the session, and derives from that a key for AES symmetric encryption. La clave de cifrado se gira periódicamente a lo largo de la duración de la sesión.The encryption key is rotated periodically throughout the duration of the session. El secreto de sesión compartido y todas las claves de cifrado solo se mantienen en memoria por ambos lados y solo son válidos mientras dure la sesión.The shared session secret and all encryption keys are only maintained in-memory by both sides, and are only valid for the duration of the session. Nunca se escriben en el disco ni se envían a ningún servicio (incluido Live Share).They are never written to disk or sent to any service (including Live Share).

Autenticación del mismo nivelPeer Authentication

La sesión SSH también está autenticada en dos direcciones.The SSH session is also two-way authenticated. El host (rol de servidor SSH) usa la autenticación de clave pública y privada como es estándar para el protocolo SSH.The host (SSH server role) uses public/private key authentication as is standard for the SSH protocol. Cuando un host comparte una sesión de Live Share, genera un par de claves pública y privada RSA único para la sesión.When a host shares a Live Share session, it generates a unique RSA public/private key-pair for the session. La clave privada del host se mantiene únicamente en la memoria del proceso de host; nunca se escribe en el disco ni se envía a ningún servicio, incluido el servicio de Live Share.The host private key is kept only in memory in the host process; it is never written to disk or sent to any service including the Live Share service. La clave pública del host se publica en el servicio de Live Share junto con la información de conexión de la sesión (dirección IP y/o punto de conexión de retransmisión) en la que los invitados pueden tener acceso a ella a través del vínculo de invitación.The host public key is published to the Live Share service along with the session connection information (IP address and/or relay endpoint) where guests can access it via the invitation link. Cuando un invitado se conecta a la sesión de SSH del host, el invitado usa el protocolo de autenticación de host de SSH para validar que el host contiene la clave privada correspondiente a la clave pública publicada (sin que el invitado realmente vea la clave privada).When a guest connects to the host's SSH session, the guest uses the SSH host authentication protocol to validate that the host holds the private key corresponding to the published public key (without the guest actually getting to see the private key).

El invitado usa un token de Live Share para autenticarse con el host.The guest uses a Live Share token to authenticate itself with the host. El token es un JWT firmado emitido por el servicio Live Share que incluye notificaciones sobre la identidad del usuario (obtenida a través de MSA, AAD o inicio de sesión de GitHub).The token is a signed JWT issued by the Live Share service that includes claims about the user identity (obtained via MSA, AAD, or GitHub sign-in). El token también tiene notificaciones que indican que el invitado tiene permiso para acceder a esa sesión de Live Share específica (porque tenía el vínculo de invitación o el host lo invitó específicamente).The token also has claims that indicate the guest is allowed to access that specific Live Share session (because they had the invitation link and/or they were specifically invited by the host). El host valida ese token y comprueba las notificaciones (y, en función de las opciones, puede preguntar al usuario del host) antes de permitir que el invitado se una a la sesión.The host validates that token and checks the claims (and depending on options may prompt the host user) before allowing the guest to join the session.

Invitaciones y unirse a AccessInvitations and join access

Cada vez que se inicia una nueva sesión de colaboración, Live Share genera un nuevo identificador único que se coloca en el vínculo de invitación.Each time you start a new collaboration session, Live Share generates a new unique identifier that is placed in the invitation link. Estos vínculos proporcionan una base sólida y segura para invitar a los usuarios de confianza, ya que el identificador del vínculo es "no adivinable" y solo es válido para la duración de una sola sesión de colaboración.These links provide a solid, secure foundation to invite those you trust since the identifier in the link is "non-guessable" and is only valid for the duration of a single collaboration session.

Quitar un invitado inesperadoRemoving an unexpected guest

Como host, se le notificará automáticamente cada vez que un invitado se una a la sesión de colaboración.As a host, you are automatically notified whenever a guest joins the collaboration session.

Visual Studio Code join notification Visual Studio join notification

Mejor aún, la notificación le ofrece la posibilidad de quitar un invitado que se ha unido si por alguna razón no lo conoce.Better still, the notification gives you the ability to remove a guest that has joined if for some reason you do not know them. (Por ejemplo, si ha publicado accidentalmente el vínculo en un sistema de chat de toda la compañía y se ha unido un empleado aleatorio). Simplemente haga clic en el botón "quitar" en la notificación que aparece y se expulsarán de la sesión de colaboración.(For example, if you accidentally posted your link on a company-wide chat system and a random employee joined.) Simply click on the "Remove" button in the notification that appears and they will be ejected from the collaboration session.

En vs Code, incluso si ha descartado una notificación de combinación, también tiene la posibilidad de quitar un participante después.In VS Code, even if you have dismissed a join notification, you also have the ability to remove a participant after that. Al abrir la vista de Live Share en el explorador o en la pestaña personalizada de la barra de actividades VS Code, puede mantener el mouse sobre el nombre de un participante o hacer clic con el botón secundario en él y seleccionar el icono o la opción "quitar participante".By opening the Live Share view in the Explorer or the custom tab in the VS Code activity bar, you can hover over or right-click a participant's name and select the "Remove participant" icon or option.

Quitar participante en VS Code

Requerir aprobación de invitadoRequiring guest approval

Normalmente, los participantes que se unen a una sesión de colaboración iniciarán sesión en Live share mediante una cuenta profesional o educativa de Microsoft (AAD), un cuenta Microsoft personal o una cuenta de github.Typically, participants that join a collaboration session will be signed into Live Share using a Microsoft work or school account (AAD), personal Microsoft account, or GitHub account. Aunque el valor predeterminado de "notificación + quitar" para los usuarios que han iniciado sesión proporciona una buena combinación de velocidad y control para estos invitados, puede que le interese reducir un poco más si está haciendo algo sensible.While the "notification + remove" default for signed in users provides a good mix of speed and control for these guests, you may want to lock things down a bit more if you are doing something sensitive.

Además, en determinadas circunstancias obliga a todos los invitados a iniciar sesión para unirse a una sesión de colaboración puede ser problemático.In addition, in certain circumstances forcing all guests to sign in to join a collaboration session can be problematic. Entre los ejemplos se incluye pedir a alguien nuevo que Live Share unirse como invitado, escenarios de formación y aprendizaje, o al colaborar con alguien que no tiene uno de los tipos de cuenta admitidos.Examples include asking someone new to Live Share to join as a guest, classroom/learning scenarios, or when collaborating with someone who does not have one of the supported account types. Por estos motivos, Live Share puede permitir que los usuarios que no han iniciado sesión se unan a sesiones de colaboración como invitados de solo lectura .For these reasons, Live Share can allow users that are not signed in to join collaboration sessions as read-only guests. Aunque el host necesita aprobar estos invitados antes de que se puedan unir de forma predeterminada, es posible que desee denegar estos invitados "anónimos" o bien aprobarlos siempre en su lugar.While the host needs to approve these guests before they can join by default, you may want to either disallow these "anonymous" guests or always approve them instead.

Requerir aprobación de invitado para usuarios con sesión iniciadaRequiring guest approval for signed in users

Si desea evitar que los invitados con sesión iniciada se unan a sus sesiones de colaboración hasta que los haya "aprobado", cambie la configuración siguiente:If you would like to prevent signed in guests from joining your collaboration sessions until you have "approved" them, change the following setting:

  • En vs Code, agregue lo siguiente para settings.jsde (preferencias de > de archivo > configuración):In VS Code, add the following to settings.json (File > Preferences > Settings):

    "liveshare.guestApprovalRequired": true
    
  • En Visual Studio, establezca herramientas > opciones > Live share > "requerir aprobación de invitado" en true.In Visual Studio, set Tools > Options > Live Share > "Require guest approval" to True.

    Ventana de configuración de Visual Studio con la configuración de aprobación de invitado resaltada

A partir de este punto, se le pedirá que apruebe cada invitado que se combina.From this point forward, you'll be asked to approve each guest that joins.

Visual Studio Code join approval request Visual Studio join approval request

Como invitado, si se une a una sesión en la que el host tiene esta configuración habilitada, se le notificará en la barra de estado o en el cuadro de diálogo de combinación que Live Share espera en el host para su aprobación.As a guest, if you join a session where the host has this setting enabled, you'll be notified in the status bar or join dialog that Live Share is waiting on the host to approve.

Rechazar o aceptar automáticamente usuarios que no han iniciado sesión (anónimo)Auto-rejecting or accepting users that are not signed in (anonymous)

Como se describió anteriormente, Live Share se pueden configurar para permitir que los usuarios que no han iniciado sesión se unan a una sesión de colaboración como invitados de solo lectura .As described above, Live Share can be configured to allow users that are not signed in to join a collaboration session as read-only guests. Aunque estos invitados "anónimos" deben escribir un nombre al unirse, un nombre simple no proporciona el mismo nivel de confianza que un inicio de sesión real.While these "anonymous" guests must enter a name when joining, a simple name does not provide the same level of assurance as a real sign-in. Por lo tanto, de forma predeterminada, se solicita al host que apruebe cualquier invitado anónimo independientemente de la configuración de "requerir aprobación de invitado" que se ha descrito anteriormente.Therefore, by default, the host is prompted to approve any anonymous guest regardless of the "require guest approval" setting described above.

Siempre puede rechazar (deshabilitar invitados anónimos) o Aceptar siempre usuarios anónimos, como se indica a continuación:You can always reject (disable anonymous guests) or always accept anonymous users instead as follows:

  • En vs Code, establezca liveshare.anonymousGuestApproval en settings.js(las preferencias de > de archivo > configuración) en accept , reject o prompt (valor predeterminado) según corresponda.In VS Code, set liveshare.anonymousGuestApproval in settings.json (File > Preferences > Settings) to accept, reject, or prompt (the default) as appropriate.

  • En Visual Studio, establezca herramientas > opciones > Live share > "aprobación de invitado anónimo" para aceptar, rechazar o preguntar (valor predeterminado) según corresponda.In Visual Studio, set Tools > Options > Live Share > "Anonymous guest approval" to Accept, Reject, or Prompt (the default) as appropriate.

Tenga en consideración que solo debe enviar vínculos de invitación Live Share a personas en las que confíe.Regardless, remember that you should only send Live Share invitation links to people you trust.

Controlar el acceso y la visibilidad de los archivosControlling file access and visibility

Como invitado, el modelo remoto de Live Share le proporciona acceso de lectura y escritura rápido a los archivos y carpetas que el host ha compartido con usted sin tener que sincronizar todo el contenido de un proyecto.As a guest, Live Share's remote model gives you quick read/write access to files and folders the host has shared with you without having to sync the entire contents of a project. Por tanto, puede navegar por los archivos y editarlos de forma independiente en todo el árbol de archivos compartidos.You can therefore independently navigate and edit files in the entire shared file tree. Sin embargo, esta libertad plantea algunos riesgos para el host.However, this freedom does pose some risks to the host. En concepto, un desarrollador podría optar por entrar y modificar el código fuente sin su conocimiento o ver el código fuente confidencial o "secretos" ubicado en algún lugar del árbol de archivos compartido.In concept, a developer could opt to go in and modify source code without your knowledge or see sensitive source code or "secrets" located somewhere in the shared file tree. Por lo tanto, como un host, es posible que no siempre quiera que el invitado tenga acceso a todo el proyecto que está compartiendo.Consequently, as a host, you may not always want the guest to have access to the entirety of a project you are sharing. Afortunadamente, una ventaja adicional de este modelo remoto es que puede optar por "excluir" los archivos que no desea compartir con nadie sin sacrificar la funcionalidad.Thankfully, an added advantage of this remote model is that you can opt to "exclude" files you do not want to share with anyone without sacrificing on functionality. Los invitados todavía pueden participar en cosas como las sesiones de depuración que normalmente necesitarían acceder a estos archivos si quisiera hacerlo por sí solos.Your guests can still participate in things like debugging sessions that would normally require access to these files if they wanted to do so on their own.

Puede hacerlo agregando una .vsls.jsen el archivo a la carpeta o el proyecto que está compartiendo.You can accomplish this by adding a .vsls.json file to the folder or project you are sharing. Cualquier configuración que agregue a este archivo con formato JSON cambia el modo en que Live Share procesa los archivos.Any settings you add to this json formatted file changes how Live Share processes files. Además de proporcionar control directo, estos archivos también se pueden confirmar en el control de código fuente, por lo que cualquier persona que pueda clonar un proyecto podrá aprovechar estas reglas sin ningún esfuerzo adicional por su parte.In addition to providing you direct control, these files can also be committed to source control so anyone cloning a project will be able to take advantage of these rules with no additional effort on their part.

Este es un ejemplo .vsls.jsen el archivo:Here's an example .vsls.json file:

{
    "$schema": "http://json.schemastore.org/vsls",
    "gitignore":"none",
    "excludeFiles":[
        "*.p12",
        "*.cer",
        "token",
        ".gitignore"
    ],
    "hideFiles": [
        "bin",
        "obj"
    ]
}

Nota

También puede hacer que todos los archivos o carpetas que comparte sea de solo lectura cuando se inicia una sesión de colaboración.You can also make the all files/folders you share read-only when you start a collaboration session. Consulte a continuación para obtener más información.See below for details.

Veamos cómo cambian estas propiedades qué pueden hacer los invitados.Let's walk through how these properties change what guests can do.

PropiedadesProperties

La propiedad excludeFiles permite especificar una lista de patrones de archivos Glob (muy parecidos a los archivos. gitignore) que evitan que Live share abra determinados archivos o carpetas para invitados.The excludeFiles property allows you to specify a list of glob file patterns (very much like those found .gitignore files) that prevents Live Share from opening certain files or folders for guests. Tenga en cuenta que esto incluye escenarios como un invitado que sigue o salta a la ubicación de edición, pasando a un archivo durante la depuración colaborativa, cualquier característica de navegación por el código como ir a definición, etc.Be aware that this is inclusive of scenarios like a guest following or jumping to your edit location, stepping into a file during collaborative debugging, any code navigation features like go to definition, and more. Está destinada a archivos que no desea compartir en ninguna circunstancia, como aquellos que contienen secretos, certificados o contraseñas.It is intended for files you never want to share under any circumstances like those containing secrets, certificates, or passwords. Por ejemplo, puesto que controlan la seguridad, los .vsls.jsen los archivos siempre se excluyen.For example, since they control security, .vsls.json files are always excluded.

La propiedad hideFiles es similar, pero no es tan estricta.The hideFiles property is similar, but not quite as strict. Estos archivos simplemente están ocultos en el árbol de archivos.These files are simply hidden from the file tree. Por ejemplo, si ha tenido que ir a uno de estos archivos durante la depuración, sigue abierto en el editor.For example, if you happened to step into one of these files during debugging, it is still opened in the editor. Esta propiedad es principalmente útil si no tiene una configuración de archivos. gitignore (como sería el caso si utiliza un sistema de control de código fuente diferente) o si simplemente desea aumentar lo que ya existe para evitar el desorden o la confusión.This property is primarily useful if you do not have a .gitignore file setup (as would be the case if you are using a different source control system) or if you simply want to augment what is already there to avoid clutter or confusion.

La configuración gitignore establece cómo debe procesar Live share el contenido de los archivos. gitignore en carpetas compartidas.The gitignore setting establishes how Live Share should process the contents of .gitignore files in shared folders. De forma predeterminada, cualquier globs que se encuentre en los archivos. gitignore se trata como si se hubiera especificado en la propiedad "hideFiles".By default, any globs found in .gitignore files are treated as if they were specified in the "hideFiles" property. Sin embargo, puede elegir un comportamiento diferente con uno de los siguientes valores:However, you can choose a different behavior using one of the following values:

OpciónOption ResultadoResult
none el contenido de. gitignore es visible para los invitados en el árbol de archivos (suponiendo que no se filtre por una configuración de editor invitado)..gitignore contents are visible to guests in the file tree (assuming they are not filtered by a guest editor setting).
hide El valor predeterminado.The default. Globs Inside. gitignore se procesan como si estuvieran en la propiedad "hideFiles".Globs inside .gitignore are processed as if they were in the "hideFiles" property.
exclude Globs Inside. gitignore se procesan como si estuvieran en la propiedad "excludeFiles".Globs inside .gitignore are processed as if they were in the "excludeFiles" property.

Una desventaja de la exclude configuración es que el contenido de las carpetas como node_modules es frecuente en. gitignore, pero puede ser útil en paso a paso por instrucciones durante la depuración.A downside of the exclude setting is that the contents of folders like node_modules are frequently in .gitignore but can be useful to step into during debugging. Por consiguiente, Live Share admite la posibilidad de invertir una regla mediante "!" en la propiedad excludeFiles.Consequently, Live Share supports the ability to reverse a rule using "!" in the excludeFiles property. Por ejemplo, esta .vsls.jsen el archivo excluiría todo en ". gitignore", salvo node_modules:For example, this .vsls.json file would exclude everything in ".gitignore" except for node_modules:

{
    "$schema": "http://json.schemastore.org/vsls",
    "gitignore":"exclude",
    "excludeFiles":[
        "!node_modules"
    ]
}

Las reglas de ocultación y exclusión se procesan por separado, por lo que si desea ocultar node_modules para reducir la aglomeración sin excluirla realmente, puede modificar el archivo de la siguiente manera:The hide and exclude rules are processed separately, so if you still wanted to hide node_modules to reduce clutter without actually excluding it, you can simply edit the file as follows:

{
    "$schema": "http://json.schemastore.org/vsls",
    "gitignore":"exclude",
    "excludeFiles":[
        "!node_modules"
    ],
    "hideFiles":[
        "node_modules"
    ]
}

.vsls.jsen archivos de subcarpetas.vsls.json files in sub-folders

Por último, al igual que. gitignore, se pueden colocar .vsls.jsen archivos en subcarpetas.Finally, just like .gitignore, .vsls.json files can be placed in sub-folders. Las reglas de ocultar o excluir se determinan a partir de la .vsls.jsen el archivo en la carpeta raíz que se ha compartido (si está presente) y, a continuación, recorrer en cada subcarpeta desde allí un archivo determinado para buscar .vsls.jsen los archivos que se van a procesar.Hide/exclude rules are determined by starting with the .vsls.json file in the root folder you have shared (if present) and then walking through at each sub-folder from there leading to a given file to look for .vsls.json files to process. El contenido de .vsls.jsen los archivos de las carpetas más hacia abajo en el árbol de archivos y, a continuación, las reglas de suplemento (o invalidación) establecidas en los niveles superiores.The contents of .vsls.json files in folders farther down the file tree then supplement (or override) rules established at higher levels.

Deshabilitar el uso compartido de archivos externoDisabling external file sharing

De forma predeterminada, Live Share también compartirá los archivos que el host abre y que son externos a la solución o carpeta compartida.By default, Live Share will also share any files the host opens that are external to the shared folder / solution. Esto permite abrir rápidamente otros archivos relacionados sin tener que volver a compartir.This makes it easy to quickly open up other related files without having to re-share.

Si prefiere deshabilitar esta característica:If you would prefer to disable this feature:

  • En vs Code, agregue lo siguiente a settings.jsen:In VS Code, add the following to settings.json:

    "liveshare.shareExternalFiles": false
    
  • En Visual Studio, establezca > las opciones de herramientas > Live share > "compartir archivos externos" en false.In Visual Studio, set Tools > Options > Live Share > "Share External Files" to False

Modo de solo lecturaRead-only mode

A veces, cuando comparte el código como un host, no desea que los invitados realicen modificaciones.Sometimes when you share your code as a host, you don't want your guests to make edits. Es posible que necesite que el invitado eche un vistazo a parte del código, o que muestre el proyecto a un gran número de invitados y no desee que se realicen modificaciones innecesarias o accidentales.You might need your guest to take a look at some of your code, or you are showing your project to a large number of guests and do not want any unnecessary or accidental edits to be made. Live Share ofrece la posibilidad de compartir proyectos en modo de solo lectura.Live Share offers the ability to share projects in read-only mode.

Como host, al compartir, tiene la opción de habilitar el modo de solo lectura para una sesión de colaboración.As a host, when sharing, you have the option to enable read-only mode for a collaboration session. Cuando un invitado se une, no podrá realizar modificaciones en el código, aunque todavía puede ver los cursores y resaltados de los demás, así como navegar por el proyecto.When a guest joins, they will not be able to make edits to the code, though you can still see each other's cursors and highlights as well as navigate through the project.

Todavía puede depurar con invitados en modo de solo lectura.You can still co-debug with guests while in read-only mode. Los invitados no tendrán la capacidad de recorrer el proceso de depuración, pero todavía pueden agregar o quitar puntos de interrupción e inspeccionar las variables.Guests will not have the ability to step through the debugging process, but can still add or remove breakpoints, and inspect variables. Además, todavía puede compartir servidores y terminales (solo lectura) con invitados.Additionally, you can still share servers and terminals (read-only) with guests.

Puede obtener más información acerca de cómo iniciar una sesión de colaboración de solo lectura:  vs Code  vsYou can learn more about starting a read-only collaboration session: VS Code VS

Depuración conjuntaCo-debugging

Cuando se trata de problemas de codificación difíciles o errores, tener un par de ojos adicional cuando la depuración puede ser realmente útil.When you're tackling tough coding problems or bugs, having an extra pair of eyes when debugging can be really useful. Visual Studio Live Share habilita la "depuración colaborativa" o la "co-depuración" compartiendo la sesión de depuración con todos los invitados cada vez que el host inicia la depuración.Visual Studio Live Share enables "collaborative debugging" or "co-debugging" by sharing the debugging session with all guests whenever the host starts debugging.

Como host, tiene un control total sobre cuándo se inicia o detiene una sesión de depuración, pero la depuración conlleva algunos riesgos si comparte con alguien en quien no confía.As a host, you are in complete control over when a debugging session starts or stops, but co-debugging does pose some risks if you are sharing with someone you do not trust. Live Share permite a los invitados invitar a ejecutar comandos console/REPL y, por tanto, hay un riesgo de que un actor malintencionado ejecute un comando que no desea que se ejecute.Live Share allows guests you invite to run console/REPL commands and there is therefore a risk of a malicious actor running a command you would not want them to run.

Por lo tanto, solo debe depurar con aquellos en los que confíe.Consequently, you should only co-debug with those you trust.

Más información:  vs Code  frente aLearn more: VS Code VS

Compartir un servidor localSharing a local server

Al depurar conjuntamente, puede ser muy útil obtener acceso a diferentes partes de la aplicación ofrecidas por el anfitrión para la sesión de depuración.When co-debugging, it can be really useful to get access to different parts of the application being served up by the host for the debugging session. Es posible que quiera acceder a la aplicación en un explorador, acceder a una base de datos local o visitar un punto de conexión de REST desde sus herramientas.You may want to access the app in a browser, access a local database, or hit a REST endpoint from your tools. Live Share le permite "compartir un servidor" que asigna un puerto local en el equipo del host al mismo puerto exacto en el equipo del invitado.Live Share lets you "share a server" which maps a local port on the host's machine to the exact same port on guest's machine. Como invitado, puede interactuar con la aplicación exactamente como si se ejecutara localmente en el equipo (por ejemplo, el host y el invitado pueden acceder a una aplicación web que se ejecuta en http://localhost:3000) .As a guest, you can then interact with the application exactly as if it was running locally on your machine (e.g. the host and guest can both access a web app running on http://localhost:3000).

Sin embargo, como un host, debe ser muy selectivo con los puertos que comparte con los invitados y compartir los puertos de la aplicación en lugar de los puertos del sistema.However, as a host, you should be very selective with the ports you share with guests and only share application ports rather system ports. En el caso de los invitados, los puertos compartidos se comportarán exactamente igual que si el servidor o servicio se estuviese ejecutando en su propia máquina.For guests, shared ports will behave exactly like they would if the server/service was running on their own machine. Esto es muy útil, pero podría ser también arriesgado si es que se comparte el puerto incorrecto.This is very useful, but if the wrong port is shared can also be risky. Por esta razón, Live Share no realiza ninguna suposición sobre lo que se debe compartir o no sin un valor de configuración y el host que realiza una acción.For this reason, Live Share does not make any assumptions about what should or should not be shared without a configuration setting and the host performing an action.

En Visual Studio, el Puerto de la aplicación web especificado en los proyectos de ASP.net se comparte automáticamente durante la depuración solo para facilitar el acceso de invitado a la aplicación web cuando se ejecuta.In Visual Studio, the web application port specified in ASP.NET projects is automatically shared during debugging only to facilitate guest access to the web app when running. Sin embargo, puede desactivar esta automatización estableciendo herramientas > opciones > Live Share > "compartir aplicación web al depurar" en "false" si lo prefiere.However, you can turn off this automation by setting Tools > Options > Live Share > "Share web app on debug" to "False" if you prefer.

En Visual Studio Code, Live Share intenta detectar los puertos de aplicación adecuados y compartirlos.In Visual Studio Code, Live Share attempts to detect the proper application ports and share them. Sin embargo, puede deshabilitarlo agregando lo siguiente para settings.jsen:However, you can disable this by adding the following to settings.json:

    liveshare.autoShareServers: false

En cualquier caso, preste atención al compartir puertos adicionales.In either case, exercise care when sharing additional ports.

Puede obtener más información sobre la configuración de la característica aquí:  vs Code  frente aYou can learn more about configuring the feature here: VS Code VS

Compartir un terminalSharing a terminal

El desarrollo moderno hace un uso frecuente de una amplia gama de herramientas de línea de comandos.Modern development makes frequent use of a wide array of command line tools. Afortunadamente, como anfitrión, Live Share le permite, de forma opcional, "compartir un terminal" con los invitados.Fortunately, Live Share allows you as a host to optionally "share a terminal" with guests. El terminal compartido puede ser de solo lectura o totalmente colaborativo, para que tanto usted como los invitados puedan ejecutar comandos y ver los resultados.The shared terminal can be read-only or fully collaborative so both you and the guests can run commands and see the results. Como host, puede permitir a otros colaboradores ver solo la salida o usar cualquier número de herramientas de línea de comandos para ejecutar pruebas, compilaciones o incluso evaluar problemas específicos del entorno.As the host, you're able to allow other collaborators to either just see the output or to use any number of command line tools to run tests, builds, or even triage environment-specific problems.

Solo los hosts pueden iniciar terminales compartidos para impedir que los invitados inicien uno y hagan algo que no espere ni esté viendo.Only hosts can start shared terminals to prevent guests from starting one up and doing something you are not expecting or watching. Al iniciar un terminal compartido como host, puede especificar si debe ser de solo lectura o de lectura y escritura.When you start a shared terminal as a host, you can specify whether it should be read-only or read/write. Si el terminal es de lectura/escritura, todos los participantes pueden escribir en el terminal, incluido el anfitrión, lo que permite intervenir fácilmente si un invitado hace algo que no le gusta.When the terminal is read/write, everyone can type in the terminal including the host which makes it easy to intervene if a guest is doing something you do not like. Sin embargo, para estar seguros, debería darle acceso de lectura/escritura a los invitados solo cuando sabe que realmente lo necesitan y limitarse a los terminales de solo lectura en escenarios donde quiere que un invitado solo vea la salida de los comandos que ejecuta.However, to be safe, you should only give read/write access to guests when you know they actually need it and stick with read-only terminals for scenarios where you just want the guest to see the output of any commands you run.

En Visual Studio, los terminales no se comparten de forma predeterminada.In Visual Studio, terminals are not shared by default. En VS Code, los terminales se comparten automáticamente de forma predeterminada como de solo lectura .In VS Code, terminals are automatically shared read-only by default. Sin embargo, puede deshabilitarlo agregando lo siguiente para settings.jsen:However, you can disable this by adding the following to settings.json:

"liveshare.autoShareTerminals": false

Más información:  vs Code  frente aLearn more: VS Code VS

Al iniciar sesión con una dirección de correo electrónico profesional o educativa respaldada por Microsoft, es posible que vea un mensaje que indica "requerir aprobación del administrador" al iniciar sesión.When signing in using a Microsoft backed work or school email address you may see a message saying "Need admin approval" when signing in. Esto se debe a que Live Share requiere acceso de lectura a la información de usuario para sus características de seguridad y el inquilino de Azure AD está configurado para requerir "consentimiento del administrador" para las nuevas aplicaciones que acceden al contenido del directorio.This is because Live Share requires read access to user information for its security features and your Azure AD tenant is set up to require “admin consent” for new applications accessing the contents of the directory.

Es necesario que el administrador de AD lo resuelva por usted con la siguiente información:Your AD admin would need to resolve this for you using the following information:

Esto solo tendría que realizarse una vez para cualquier persona que use Live Share.This would only need to be done once for anyone using Live Share. Vea aquí y aquí para obtener más información.See here and here for details.

Consulte tambiénSee also

¿Tiene algún problema?Having problems? Consulte la solución de problemas o envíe sus comentarios.See troubleshooting or provide feedback.