

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# インターネットアクセスなしでサブネットを使用して VPC に接続する場合
<a name="remote-access-local-ide-setup-vpc-no-internet"></a>

リモート IDE をインターネットアクセスのないプライベートサブネットの Studio スペースに接続する前に、管理者に があることを確認してください[VPC 内のインターネットへのアクセスがないサブネットで実行するように Studio を設定する](remote-access-remote-setup-vpc-subnets-without-internet-access.md)。

リモート IDE をプライベートサブネットの Studio スペースに接続するには、次のオプションがあります。
+ HTTP プロキシの設定 (VS Code および Kiro でサポート)
+ パッケージ化されたリモートサーバーと拡張機能 (VS Code のみ)

**重要**  
カーソルは、アウトバウンドインターネットアクセスのないプライベートサブネットの Studio スペースへの接続ではサポートされていません。

**Topics**
+ [制御された許可リストを使用する HTTP プロキシ](#remote-access-local-ide-setup-vpc-no-internet-http-proxy-with-controlled-allow-listing)
+ [パッケージ化されたリモートサーバーと拡張機能 (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 サーバーおよび拡張機能関連の CDNsとエンドポイントへのアクセスを許可するように依頼してください。詳細については、「[制御された許可リストを使用して 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 ]

`remote.SSH.httpProxy` または `remote.SSH.httpsProxy`設定でプロキシ URL を指定して、VS Code リモート開発用の HTTP プロキシを設定します。

**注記**  
リモート環境の `curlrc`および ファイルから設定を使用するには、「Remote.SSH: Curl And Wget 設定`wgetrc`ファイルの使用」を有効にすることを検討してください。これにより、SageMaker スペース内のそれぞれのデフォルトの場所に配置された `curlrc` ファイルと `wgetrc` ファイルが、特定のケースの有効化に使用できるようになります。

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

設定を HTTP または HTTPS プロキシエンドポイントに設定して、Kiro リモート開発`aws.sagemaker.ssh.kiro.httpsProxy`用の HTTP プロキシを設定します。

Kiro で MCP (モデルコンテキストプロトコル) サーバーを使用する場合は、プロキシ環境変数を MCP サーバー設定に追加する必要があります。

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

------

このオプションを使うと、HTTP プロキシの設定が許可されている場合に機能し、拡張機能によってはパブリックエンドポイントが必要なため、追加の拡張機能を柔軟にインストールできるようになります。

## パッケージ化されたリモートサーバーと拡張機能 (VS Code のみ)
<a name="remote-access-local-ide-setup-vpc-no-internet-pre-packaged-vs-code-remote-server-and-extensions"></a>

**注記**  
このオプションは Visual Studio Code でのみ使用できます。Kiro と Cursor は、パッケージ化されたリモートサーバーのセットアップをサポートしていません。

Studio スペースが外部エンドポイントにアクセスして VS Code リモートサーバーと拡張機能をダウンロードできない場合は、事前にパッケージ化できます。この方法では、管理者は、特定のバージョンの VS Code の `.VS Code-server` ディレクトリを含む tarball をエクスポートできます。次に、管理者は SageMaker AI ライフサイクル設定 (LCC) スクリプトを使用し、tarball をコピーして、ユーザーのホームディレクトリ (`/home/sagemaker-user`) に解凍します。詳細については、「[パッケージ化されたリモートサーバーと拡張機能を設定する (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>

以下は、リモートアクセスとインターネットが有効になっているスペースを作成できない場合に、SSH サーバーがプリインストールされたローカルコンテナを起動するための Dockerfile のサンプルです。

**注記**  
この例では、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 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
```