本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在没有互联网访问权限的情况下使用子网连接到 VPC
在将 Visual Studio Code 连接到无法访问互联网的私有子网中的 Studio 空间之前,请确保您的管理员已将 Studio 设置为在 VPC 内运行无需访问互联网的子网连接。
您可以通过两种方式将本地 Visual Studio Code 连接到私有子网中的 Studio 空间:
-
设置 HTTP 代理
-
预先打包的 VS Code 远程服务器和扩展
带有受控许可名单的 HTTP 代理
当您的 Studio 空间位于防火墙或代理后面时,请要求您的管理员允许访问 VS Code 服务器 CDNs 以及与扩展相关的端点。有关更多信息,请参阅 设置带有受控许可名单的 HTTP 代理。
设置完成后,您可以通过为代理 URL 提供remote.SSH.httpProxy
或remote.SSH.httpsProxy
设置来配置 VS Code 远程开发的 HTTP 代理。
注意
考虑启用 “Remote.SSH:使用 Curl 和 Wget 配置文件”,以使用来自远程环境和文件的配置。curlrc
wgetrc
这样,放置在 SageMaker 空间中各自默认位置的curlrc
和wgetrc
文件就可以用来启用某些案例。
此选项在允许您设置 HTTP 代理时起作用,并允许您灵活安装其他扩展,因为某些扩展需要公共端点。
预先打包的 VS Code 远程服务器和扩展
当您的 Studio 空间无法访问外部端点来下载 VS Code 远程服务器和扩展时,您可以对其进行预打包。通过这种方法,您的管理员可以导出包含特定版本的 VS Cod .VS
Code-server
e 目录的压缩包。然后,管理员使用 A SageMaker I 生命周期配置 (LCC) 脚本将压缩包复制并解压缩到您的主目录 (/home/sagemaker-user
)。有关更多信息,请参阅 设置预打包的 Visual Studio Code 远程服务器和扩展。
VS Code 远程服务器和扩展程序使用预打包的说明
-
在本地计算机上安装 VS Code
-
当您连接到 SageMaker 空间时:
-
使用 Default 配置文件来确保与预打包的扩展兼容。否则,您需要在连接到 Studio 空间后使用下载的 VSIX 文件安装扩展。
-
选择一个特定于 VS Code 版本的 LCC 脚本,以便在启动空间时附加到空间。
-
用于预打包 VS Code 远程服务器和扩展的 Dockerfile 用法示例
如果无法创建启用远程访问和互联网的空间,则以下是 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
并按照预打包的 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 C ode-server-v 1.100.2)
以下是如何安装特定版本的 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