# 远程开发概述

> For the complete documentation index, see [llms.txt](https://www.jetbrains.com/zh-cn/help/idea/llms.txt).

远程开发使您可以使用远程机器、开发容器、WSL 或各种提供商来检出和加载您的项目，进行索引、分析、构建、运行、调试和测试代码。

通过远程开发，您可以执行以下操作：

* 在与本地运行的操作系统不同的操作系统上编辑、构建或调试应用程序。

* 使用比本地机器更大或更强大的硬件进行开发。

* 使用笔记本电脑作为瘦客户端，无需在本地机器上托管源代码。

* 随时随地工作，同时敏感信息仅托管在公司的服务器上。

## 连接

远程主机是存放源代码并运行后端 IDE 的物理机或虚拟机。 您连接到后端，该后端透明地提供对所有 IDE 功能的完全访问。

可以通过多种场景建立与远程机器的连接：

### SSH 连接

通过 SSH 从本地机器连接到远程服务器，或反之（从服务器上已安装的 IDE 连接到本地机器）。

您可以使用以下几种方法：

* JetBrains Toolbox 应用程序 ：支持在 Linux、macOS 和 Windows 上的连接。 有关更多信息，请参阅 [Toolbox App](https://www.jetbrains.com/zh-cn/help/toolbox-app/about-the-instance.html)页面。

* IntelliJ IDEA ：从 IntelliJ IDEA 欢迎屏幕连接到您的远程项目。 更多信息请参阅 [从 IntelliJ IDEA 连接到远程服务器](remote-development-starting-page.html)。

* JetBrains Gateway ：可以使用 JetBrains Gateway 通过 SSH 连接到 Linux 机器。 还可以连接到各种开发环境。 有关更多信息，请参见 [连接并使用 JetBrains Gateway](remote-development-a.html)。

### 开发容器连接

开发容器连接是在远程机器上启动开发容器，用于远程文件系统中包含 JSON 文件的项目或从 Git 仓库克隆的项目。

有关此工作流程的描述，请参阅 [为远程项目启动 Dev Container](start-dev-container-for-a-remote-project.html)。

### WSL 连接

WSL 连接是将您的 IDE 后端配置为直接在 WSL2 中启动。 JetBrains Gateway 为这种场景提供原生 WSL 支持。

有关更多信息，请参阅 [连接到在 WSL2 上运行的项目](remote-development-a.html#run_in_wsl)。

### 开发环境

通过 JetBrains Gateway，还可以连接到运行在 Ona、Google Cloud、GitHub Codespaces、Amazon CodeCatalyst 和 Coder 上的各种开发环境。

有关如何连接到每个环境的更多信息，请参阅 [连接并使用 JetBrains Gateway](remote-development-a.html)。

## 可扩展性

### IDE 后端

后端可以通过以下方式扩展各种 IntelliJ IDEA 插件：

* 通过将必需插件解压到 [相应的目录](https://intellij-support.jetbrains.com/hc/en-us/articles/206544519-Directories-used-by-the-IDE-to-store-settings-caches-plugins-and-logs?page=3)中

* 运行以下代码（需要网络连接到 [JetBrains Marketplace](https://plugins.jetbrains.com/)）： ``` remote-dev-server installPlugins <PLUGIN_ID1> <PLUGIN_ID2> ... ``` 请查看以下示例： ``` remote-dev-server installPlugins IdeaVIM ```

如果插件提供一组新的检查和功能，所有这些都会显示在 JetBrains Client 上。

有关更多信息，请参见 [安装插件](work-inside-remote-project.html#plugins)。

### JetBrains Gateway SDK

JetBrains Gateway 可以像任何其他基于 IntelliJ 平台的产品一样进行扩展。

您可以使用以下几种方法：

* 使用 [https://github.com/JetBrains/gradle-intellij-plugin/](https://github.com/JetBrains/gradle-intellij-plugin/) 设置一个新项目（ `gradle-intellij-plugin` 应 >= 1.1.4）

* 请使用以下设置针对 JetBrains Gateway 构建您的插件： ``` intellij { version.set("213.2667-CUSTOM-SNAPSHOT") type.set("GW") instrumentCode.set(false) } ``` 您可以在 [https://www.jetbrains.com/zh-cn/intellij-repository/snapshots](https://www.jetbrains.com/zh-cn/intellij-repository/snapshots)查看可用版本（参见 group com.jetbrains.gateway）

### 编排

除了基本的 SSH 和 Code With Me 连接外，供应商可以为自己的编排服务定制 JetBrains Gateway。 这可以在 JetBrains 与供应商之间的自定义协议中完成。

JetBrains Gateway 基于 IntelliJ 平台，拥有用于与 JetBrains Client 连接和交互的 API。

请查看以下示例：

一个大型组织希望编写自己的编排工具。 由于安全原因，基本的 SSH 流程是不够的。 该组织编写内部插件并将其交付给开发者。 开发者可以在其笔记本电脑上的 JetBrains Gateway 或 IntelliJ IDEA 中安装此插件。

这是对 API 的非常简要介绍（它们尚未最终确定，实际上这也不是完整范围，但它们说明了总体思路）。

### JetBrains 客户端

JetBrains Client 并非为连接部分的扩展性而设计。 不过，您可以开发并安装各种 IntelliJ IDEA 插件，这些插件可以修改 UI、键盘快捷键、主题和其他涉及 IDE UI 交互的部分，但不会影响其功能。

