

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

# 连接到具有无互联网访问权限的子网的 VPC
<a name="remote-access-local-ide-setup-vpc-no-internet"></a>

在将远程 IDE 连接到无法访问互联网的私有子网中的 Studio 空间之前，请确保您的管理员已[将 Studio 设置为在 VPC 中使用无互联网访问权限的子网运行](remote-access-remote-setup-vpc-subnets-without-internet-access.md)连接。

您可以通过以下选项将远程 IDE 连接到私有子网中的 Studio 空间：
+ 设置 HTTP 代理（支持 VS Code 和 Kiro）
+ Pre-packaged 远程服务器和扩展（仅限 VS Code）

**重要**  
在没有出站互联网访问权限的情况下，不支持 Cursor 连接到私有子网中的 Studio 空间。

**Topics**
+ [带受控允许列表的 HTTP 代理](#remote-access-local-ide-setup-vpc-no-internet-http-proxy-with-controlled-allow-listing)
+ [Pre-packaged 远程服务器和扩展（仅限 VS Code）](#remote-access-local-ide-setup-vpc-no-internet-pre-packaged-vs-code-remote-server-and-extensions)

## 带受控允许列表的 HTTP 代理
<a name="remote-access-local-ide-setup-vpc-no-internet-http-proxy-with-controlled-allow-listing"></a>

如果您的 Studio 空间位于防火墙或代理后面，请要求管理员允许访问您的 IDE 服务器以及与扩展相关的 CDN 和端点。有关更多信息，请参阅 [设置带受控允许列表的 HTTP 代理](remote-access-remote-setup-vpc-subnets-without-internet-access.md#remote-access-remote-setup-vpc-subnets-without-internet-access-setup-http-proxy-with-controlled-allow-listing)。

------
#### [ VS Code ]

通过为代理 URL 提供`remote.SSH.httpProxy`或`remote.SSH.httpsProxy`设置，为 VS Code 远程开发配置 HTTP 代理。

**注意**  
考虑启用 “Remote.SSH：使用 Curl 和 Wget 配置文件” 以使用远程环境`curlrc`和`wgetrc`文件中的配置。这样，放置在 SageMaker 空间中各自默认位置的`curlrc`和`wgetrc`文件就可以用来启用某些案例。

------
#### [ Kiro ]

通过将设置设置设置为 HTTP 或 HTTPS 代理端点，`aws.sagemaker.ssh.kiro.httpsProxy`为 Kiro 远程开发配置 HTTP 代理。

如果您在 Kiro 中使用 MCP（模型上下文协议）服务器，则还需要将代理环境变量添加到 MCP 服务器配置中：

```
"env": {
    "http_proxy": "${http_proxy}",
    "https_proxy": "${https_proxy}"
}
```

------

此选项在您有权设置 HTTP 代理时适用，并可让您灵活地安装其他扩展，因为某些扩展需要公共端点。

## Pre-packaged 远程服务器和扩展（仅限 VS Code）
<a name="remote-access-local-ide-setup-vpc-no-internet-pre-packaged-vs-code-remote-server-and-extensions"></a>

**注意**  
此选项仅适用于 Visual Studio 代码。Kiro 和 Cursor 不支持预先打包的远程服务器设置。

当 Studio 空间无法访问外部端点以下载 VS Code 远程服务器和扩展时，可以将其预打包。通过这种方法，您的管理员可以导出一个压缩包，其中包含特定版本的 VS Code 的 `.VS Code-server` 目录。然后，管理员使用 A SageMaker I 生命周期配置 (LCC) 脚本将压缩包复制并解压缩到您的主目录 (`/home/sagemaker-user`)。有关更多信息，请参阅 [设置 Pre-packaged 远程服务器和扩展（仅限 VS Code）](remote-access-remote-setup-vpc-subnets-without-internet-access.md#remote-access-remote-setup-vpc-subnets-without-internet-access-setup-pre-packaged-vs-code-remote-server-and-extensions)。

**VS Code 远程服务器和扩展的预打包说明**

1. 在本地计算机上安装 VS Code

1. 当您连接到 SageMaker 空间时：
   + 使用默认配置文件以确保与预打包扩展的兼容性。否则，您需要在连接到 Studio 空间后，使用下载的 VSIX 文件安装扩展。
   + 选择要在启动空间时附加到空间的特定于 VS Code 版本的 LCC 脚本。

### 用于预打包 VS Code 远程服务器和扩展的 Dockerfile 用法示例
<a name="remote-access-local-ide-setup-vpc-no-internet-pre-packaged-vs-code-remote-server-and-extensions-example-dockerfile"></a>

以下是一个示例 Dockerfile，用于在无法创建已启用远程访问和互联网连接的空间时，启动预安装了 SSH 服务器的本地容器。

**注意**  
在此示例中，SSH 服务器不需要身份验证，并且仅用于导出 VS Code 远程服务器。
应在 x64 架构上构建和运行容器。

```
FROM amazonlinux:2023

# Install OpenSSH server and required tools
RUN dnf install -y \
    openssh-server \
    shadow-utils \
    passwd \
    sudo \
    tar \
    gzip \
    && dnf clean all

# Create a user with no password
RUN useradd -m -s /bin/bash sagemaker-user && \
    passwd -d sagemaker-user

# Add sagemaker-user to sudoers via wheel group
RUN usermod -aG wheel sagemaker-user && \
    echo 'sagemaker-user ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/sagemaker-user && \
    chmod 440 /etc/sudoers.d/sagemaker-user

# Configure SSH to allow empty passwords and password auth
RUN sed -i 's/^#\?PermitEmptyPasswords .*/PermitEmptyPasswords yes/' /etc/ssh/sshd_config && \
    sed -i 's/^#\?PasswordAuthentication .*/PasswordAuthentication yes/' /etc/ssh/sshd_config

# Generate SSH host keys
RUN ssh-keygen -A

# Expose SSH port
EXPOSE 22

WORKDIR /home/sagemaker-user
USER sagemaker-user

# Start SSH server
CMD ["bash"]
```

使用以下命令可构建和运行容器：

```
# Build the image
docker build . -t remote_server_export

# Run the container
docker run --rm -it -d \
  -v /tmp/remote_access/.VS Code-server:/home/sagemaker-user/.VS Code-server \
  -p 2222:22 \
  --name remote_server_export \
  remote_server_export
  
# change the permisson for the mounted folder
docker exec -i remote_server_export \
       bash -c 'sudo chown sagemaker-user:sagemaker-user ~/.VS Code-server'

# start the ssh server in the container 
docker exec -i remote_server_export bash -c 'sudo /usr/sbin/sshd -D &'
```

使用以下命令进行连接：

```
ssh sagemaker-user@localhost -p 2222
```

必须先在 `.ssh/config` 文件中配置以下内容，之后才能连接此容器。之后，在进行连接时，您将能够在远程 SSH 侧面板中看到 `remote_access_export` 作为主机名。例如：

```
Host remote_access_export
  HostName localhost
  User=sagemaker-user
  Port 2222
  ForwardAgent yes
```

存档`/tmp/remote_access/.VS Code-server`并按照 Pre-packaged VS Code 远程服务器和扩展中的步骤连接和安装扩展程序。解压缩后，确保 `.VS Code-server` 文件夹显示为父文件夹。

```
cd /tmp/remote_access/
sudo tar -czvf VS Code-server-with-extensions-for-1.100.2.tar.gz .VS Code-server
```

### LCC 脚本示例 () LCC-install-VS Code-server-v1.100.2
<a name="remote-access-local-ide-setup-vpc-no-internet-pre-packaged-vs-code-remote-server-and-extensions-example-lcc"></a>

以下示例说明如何安装特定版本的 VS Code 远程服务器。

```
#!/bin/bash

set -x

remote_server_file=VS Code-server-with-extensions-for-1.100.2.tar.gz

if [ ! -d "${HOME}/.VS Code-server" ]; then
    cd /tmp
    aws s3 cp s3://S3_BUCKET/remote_access/${remote_server_file} .
    tar -xzvf ${remote_server_file}
    mv .VS Code-server "${HOME}"
    rm ${remote_server_file}
else
    echo "${HOME}/.VS Code-server already exists, skipping download and install."
fi
```