

亚马逊 CodeCatalyst 不再向新买家开放。现有客户可以继续正常使用该服务。有关更多信息，请参阅 [如何从中迁移 CodeCatalyst](migration.md)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 SSH 连接到开发环境
<a name="devenvironment-connect-ssh"></a>

您可以使用 SSH 连接到您的开发环境以不受限制地执行操作，例如端口转发、上传和下载文件以及使用其他 IDEs。

**注意**  
如果要在关闭 IDE 选项卡或窗口后继续使用 SSH 一段较长时间，请务必为开发环境设置较高的超时值，这样它就不会因在 IDE 中处于非活动状态而停止。

**先决条件**
+ 您需要下列操作系统之一：
  + Windows 10 或更高版本且已启用 OpenSSH
  + macOS 和 Bash 版本 3 或更高版本
  + 带 `yum`、`dpkg` 或 `rpm` 包管理器以及 Bash 版本 3 或更高版本的 Linux
+ 您还需要 AWS CLI 版本 2.9.4 或更高版本。<a name="devenvironment-connect-ssh-steps"></a>

**使用 SSH 连接到开发环境**

1. 打开 CodeCatalyst 控制台，[网址为 https://codecatalyst.aws/](https://codecatalyst.aws/)。

1. 导航到要在其中使用 SSH 连接到开发环境的项目。

1. 在导航窗格中，选择**代码**。

1. 选择**开发环境**。

1. 使用 SSH 选择要连接到的正在运行的开发环境。

1. 选择**通过 SSH 连接**，选择所需的操作系统，然后执行以下操作：
   + 如果尚未这样做，请在指定的终端中粘贴并执行第一条命令。此命令将下载脚本并在本地环境中执行以下修改，以便您能够使用 SSH 连接到开发环境：
     + 安装会[话管理器插件 AWS CLI](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html)
     + 修改您的本地 AWS Config 并添加 CodeCatalyst 个人资料，以便您可以执行 SSO 登录。有关更多信息，请参阅 [设置为 AWS CLI 与一起使用 CodeCatalyst](set-up-cli.md)。
     + 修改您的本地 SSH 配置并添加使用 SSH 连接到开发环境所需的配置。
     + 在`~/.aws/codecatalyst-dev-env` 目录中添加 SSH 客户端用于连接到开发环境的脚本。此脚本调用 [CodeCatalyst StartDevEnvironmentSession API](https://docs.aws.amazon.com/codecatalyst/latest/APIReference/API_StartDevEnvironmentSession.html) 并使用 AWS Systems Manager Session Manager 插件与您的开发环境建立 AWS Systems Manager 会话，本地 SSH 客户端使用该会话安全地连接到远程开发环境。
   + 使用第二个命令 CodeCatalyst 使用 AWS SSO 登录 Amazon。此命令请求和检索凭证，以便`~/.aws/codecatalyst-dev-env`目录中的脚本可以调用 [CodeCatalyst StartDevEnvironmentSession API](https://docs.aws.amazon.com/codecatalyst/latest/APIReference/API_StartDevEnvironmentSession.html)。每当您的凭证过期时，都应执行此命令。当您在模式（ssh<destination>）中执行最后一条命令时，如果您的凭证已过期或者您尚未按照此步骤中的说明执行 SSO 登录，则会收到错误。
   + 使用第三条命令通过 SSH 连接到您指定的开发环境。此命令具有以下结构：

     ```
     ssh codecatalyst-dev-env=<space-name>=<project-name>=<dev-environment-id>
     ```

     您还可以使用此命令执行 SSH 客户端所允许的其他操作，例如端口转发或上传和下载文件：
     + 端口转发：

       ```
       ssh -L <local-port>:127.0.0.1:<remote-port> codecatalyst-dev-env=<space-name>=<project-name>=<dev-environment-id>
       ```
     + 将文件上传到开发环境的主目录：

       ```
       scp -O </path-to-local-file> codecatalyst-dev-env=<space-name>=<project-name>=<dev-environment-id>:</path-to-remote-file-or-directory>
       ```