SSH 直接接続は、ローカルターミナルまたは VS Code から DSW インスタンスに接続するための推奨方法です。SSH 直接接続は、ProxyClient 接続よりも高速で安定しています。
制限事項
-
非対応のインスタンスタイプ
パブリックリソースグループでは、名前が
ecs.ebmで始まるインスタンスタイプは SSH 直接接続をサポートしていません。 -
パブリックネットワーク接続の制限
パブリックネットワーク経由で DSW インスタンスに接続する場合、PAI は各 Internet NAT ゲートウェイに DNAT ルールを自動的に設定します。手動での設定は不要です。
各 Internet NAT ゲートウェイは最大 100 個の DNAT ルールをサポートします。したがって、同時に接続できる DSW インスタンスは最大 100 個です。クォータの詳細については、「Quotas」をご参照ください。
課金
DSW インスタンスへのパブリックネットワークアクセスには、NAT ゲートウェイ、Elastic IP アドレス (EIP)、または Network Load Balancer (NLB) が必要です。NAT ゲートウェイ、EIP、および NLB はそれぞれ個別に課金されます。DSW インスタンスを停止した後も課金は継続します。不要になったら、これらのリソースを速やかに削除してください。
実装手順
ステップ 1:プライベート DNS 名前解決の有効化
DSW インスタンスは仮想プライベートクラウド (VPC) にデプロイされており、SSH 接続はプライベート DNS によるインスタンス IP アドレスの名前解決に依存します。DSW インスタンスに接続する前に、プライベート DNS 名前解決を有効化してください。詳細については、「Activate Private DNS」をご参照ください。
ステップ 2:SSH キーペアの生成
クライアントで次のコマンドを実行して SSH キーペアを生成します。プロンプトが表示されたら、キーペアのパスフレーズを設定します。remote_ikernel を使用してインスタンスに接続する予定がある場合 (本トピックのシナリオ例を参照)、パスフレーズを空のままにして Enter を押してください。
デフォルトパスにキーペアを生成 (推奨)
次のコマンドを実行します:
ssh-keygen
コマンドの実行後、公開鍵 (id_rsa.pub) と秘密鍵 (id_rsa) が以下のディレクトリに生成されます。SSH キーペアがすでに存在する場合、既存のファイルは上書きされます。デフォルトパスは OS によって異なります:
Windows:
C:\Users\<username>\.sshディレクトリ。Linux: root ユーザーの場合は
/root/.sshディレクトリ、標準ユーザーの場合は/home/<username>/.sshディレクトリ。macOS:
/Users/<username>/.sshディレクトリ。
カスタムディレクトリにキーペアを生成
次のコマンドを実行します:
ssh-keygen -f /your/path/example_rsa # /your/path に example_rsa.pub と example_rsa を生成します
ステップ 3:DSW インスタンスの SSH 設定
Create a DSW instance の際に、以下のネットワークパラメーターを設定します。
既存のインスタンスの場合は、設定の変更 をクリックしてパラメーターを変更し、OK をクリックして変更を適用します。
|
パラメーター |
説明 |
|
[VPC の設定]、[vSwitch]、[セキュリティグループ] |
パブリックリソースグループで DSW インスタンスを作成するには、[VPC の設定]、[vSwitch]、および [セキュリティグループ] が必要です。これらのリソースは、以下の手順で作成できます。詳細については、「Create a VPC and vSwitches」および「Manage security groups」をご参照ください。VPC とセキュリティグループは、DSW インスタンスと同じリージョンにある必要があります。 重要
セキュリティグループのインバウンドルールで、TCP ポート 22 のトラフィックが許可されていることを確認してください。NAT ゲートウェイ経由で接続する場合、送信元には NAT ゲートウェイが属する vSwitch の CIDR ブロックを指定する必要があります。 |
|
[SSH の有効化] |
スイッチをオンにし、ステップ 2 で生成された公開鍵ファイル |
|
[サービスアクセスとポート設定] |
[SSH の有効化] スイッチをオンにすると、SSH という名前のサービスが表示されます。
|
|
[インスタンスへのパブリックアクセス] |
パブリックネットワークアクセスが必要な場合にこのパラメーターを設定します。[DNAT + EIP] を選択します。
NAT ゲートウェイと EIP は、以下の手順で作成します: 代わりに NLB を使用することもできます。NLB インスタンスを作成する際は、Instance Network Type を Internet に設定し、現在の DSW インスタンスと同じ VPC を選択します。詳細については、「Get started with NLB for IPv4 load balancing」をご参照ください。 説明
複数の DSW インスタンスで同じ DNAT ルールと EIP (または NLB) を共有する場合は、異なるパブリックアクセスポートを使用してください。 |
ステップ 4:SSH サーバーのインストール
公式のベースイメージ、およびそれらから派生したカスタムイメージには、SSH サーバーがデフォルトでインストールされ、起動されています。
DSW インスタンスのターミナルで service ssh status を実行してサービスステータスを確認するか、pgrep sshd を実行して sshd プロセスが存在するかどうかを確認します。SSH サービスが実行されていない場合は、以下のコマンドを実行して SSH サーバーをインストールします。
コンソールで SSH のステータスが「Ready」であることは、設定が完了していることのみを示し、sshd プロセスが実行中であることを意味するわけではありません。pgrep sshd を実行して確認してください。
sudo apt-get update
sudo apt-get install openssh-server
sudo service ssh start
sudo コマンドが見つからない場合は、先に apt-get install sudo を実行してから、前述のコマンドを再試行してください。
CentOS または Red Hat Enterprise Linux (RHEL) では、yum install openssh-server または dnf install openssh-server を実行します。
ステップ 5:DSW インスタンスへの接続
-
アクセス方法を確認します。
DSW ページで、インスタンス名をクリックしてインスタンス詳細ページに移動します。インスタンスの設定 タブで、ネットワーク設定 セクションを見つけ、[パブリックアクセス方法] と [VPC アクセス方法] を表示します。
説明SSH 設定でパブリックアクセスを選択していない場合、ここには VPC アクセス方法のみが表示されます。
-
DSW インスタンスに接続します。
SSH を使用して接続
-
パブリックネットワークアクセス
ローカルのコマンドラインまたは別のターミナルから、手順1で確認したパブリックアクセス方法を使用して DSW インスタンスに接続します。
ssh root@xx.xx.xx.xx -p 1024 # 秘密鍵がデフォルトパスにない場合は、鍵の場所を指定します ssh -i /your/path/example_rsa root@xx.xx.xx.xx -p 1024重要前述のコマンドでは、
-pパラメーターで SSH 用に設定したパブリックアクセスポートを指定します。この例ではポートは 1024 です。 -
VPC アクセス
ECS インスタンスなど、VPC 内の別のターミナルから、手順1で確認した VPC アクセス方法を使用して DSW インスタンスに接続します。
ssh root@dsw-notebook-xxxx.dsw-xxxx.dsw.pai.alibaba.com -p 22 # 秘密鍵がデフォルトパスにない場合は、鍵の場所を指定します ssh -i /your/path/example_rsa root@dsw-notebook-xxxx.dsw-xxxx.dsw.pai.alibaba.com -p 22
ローカルの VS Code から接続
-
VS Code を開き、拡張機能ビューから Remote - SSH 拡張機能をインストールします。
インストールが完了したら、コマンドパレットを開き、
remote-sshを入力し、[Remote-SSH: ホストに接続...] コマンドを選択してリモート接続を開始します。 左下隅の
をクリックして Remote-SSH ダイアログボックスを開き、[Connect to Host...] > [Add New SSH Host...] を選択します。-
SSH 接続コマンドを入力します。
ssh root@xx.xx.xx.xx -p 1024 # 秘密鍵がデフォルトパスにない場合は、鍵の場所を指定します ssh -i /your/path/example_rsa root@xx.xx.xx.xx -p 1024 右下隅の開くをクリックします。左下隅に接続ステータスが表示されます。
-
DSW インスタンス内のディレクトリを開いて、リモート開発とデバッグを開始します。
左側のアクティビティバーにある [エクスプローラー] アイコンをクリックし、[フォルダーを開く] ボタンをクリックし、[ファイルまたはフォルダーを開く] ダイアログボックスに
/mnt/workspaceを入力し、次に [OK] をクリックしてディレクトリを開きます。 -
コードを実行するには、DSW インスタンス内のカーネルに接続します。
VS Code の上部にある [Select a Jupyter Kernel] ドロップダウンリストで、推奨される [Python 3 (ipykernel)] カーネルを選択します。
-
シナリオ:ローカルノートブックを DSW インスタンスで実行
前提条件
本トピックのステップ 1~4 を完了し、SSH 直接接続を設定します。SSH キーペアを生成する際は、パスフレーズを空のままにしてください。
操作手順
-
ローカルターミナルから、remote_ikernel をインストールし、リモートカーネルを追加します。
pip install remote_ikernelremote_ikernel manage --add \ --kernel_cmd="ipython kernel -f {connection_file}" \ # 変更は不要です --name="Remote Python" \ --interface=ssh \ --host=root@*.*.*.*:1024 # ここをホストアドレスに置き換えます。秘密鍵がデフォルトパスにない場合は、--host="-i /your/path/example_rsa root@*.*.*.*:1024" を使用します次のメッセージが表示された場合、リモートカーネルは追加されています。
Added kernel ['rik_ssh_root_121_40_*_*_1024_remotepython']: SSH root@121.40.*.*:1024 Remote Python.リモートカーネルの設定を確認するには、次のコマンドを実行します:
remote_ikernel manage --show ローカルマシンの VS Code でノートブックファイルを開き、右上隅でカーネルを切り替えます。Remote Python を検索して選択します。
よくある質問
Q: SSH 直接接続と ProxyClient プロキシの違いは何ですか。
Q: DSW インスタンスに接続する際の SSH 接続失敗、タイムアウト、または鍵の拒否をトラブルシューティングするにはどうすればよいですか。
カテゴリ別にトラブルシューティングします:
-
パブリックネットワーク接続の失敗
セキュリティグループのインバウンドルールで、TCP ポート 22 のトラフィックが許可されていることを確認してください。NAT ゲートウェイ経由で接続する場合、送信元には NAT ゲートウェイが属する vSwitch の CIDR ブロックを指定する必要があります。
VPC に複数の Internet NAT ゲートウェイが存在する場合は、「Deploy single-AZ NAT gateways for high availability」を参照して、NAT ゲートウェイ、vSwitch、およびルートテーブル間のルーティング関係を確認してください。
Internet NAT ゲートウェイが 1 つだけの場合は、「self-service troubleshooting」を使用してネットワーク接続性を分析してください。
-
VPC 接続の失敗
クライアントと DSW インスタンスが同じ VPC にあることを確認してください。
digコマンドを実行して、DSW インスタンスの VPC ドメイン名の DNS 名前解決をテストします。NXDOMAINが返された場合、DNS 名前解決が機能していません。VPC のプライベート DNS 設定を確認してください。カスタムイメージを使用している場合は、SSH サービスがインストールされ、起動していることを確認してください。詳細については、「ステップ 4:SSH サーバーのインストール」をご参照ください。
セキュリティグループのインバウンドルールで、TCP ポート 22 のトラフィックが許可されていることを確認してください。
ssh -v root@IP -p portを実行して、詳細な接続情報を取得します。Connection timed outはセキュリティグループまたはネットワーク接続性の問題を示します。Connection refusedはポートがリッスンしていないこと (sshd が実行されていないこと) を示します。Connection resetは認証の問題を示します。
-
鍵の拒否 (Permission denied)
公開鍵 (
id_rsa.pubの内容全体) が DSW インスタンスの SSH 設定に追加されていることを確認してください。SSH コマンドで使用している秘密鍵が公開鍵と一致していることを確認してください。秘密鍵がデフォルトパス (
~/.ssh/id_rsa) にない場合は、-iパラメーターで指定してください。~/.ssh/authorized_keysファイルの権限が 600 であることを確認してください。ls -l ~/.ssh/authorized_keysを実行して確認します。権限が正しくない場合、SSH は公開鍵を拒否します。
-
VS Code 接続の失敗
Remote - SSH拡張機能がインストールされていること、またssh root@xx.xx.xx.xx -p 1024のように完全な SSH コマンドを入力したことを確認してください。ローカルターミナルで SSH コマンドを実行して接続をテストします。基本的な接続が成功してから、VS Code の設定を確認してください。
存在しないパイプに関するエラーが表示される場合は、VS Code を再起動するか、Remote - SSH 拡張機能を再インストールしてください。
Q: PyCharm などのローカル IDE を使用して DSW インスタンスにリモート接続できますか。
SSH プロトコルに基づくすべての機能はサポートしています。PyCharm を使用して接続すると、PyCharm はサーバー側コンポーネントを DSW インスタンスに自動的にダウンロードしてインストールします。そのため、DSW インスタンスにはパブリックネットワークアクセスが必要です。
Q: インスタンスのパブリック IP アドレスを確認するにはどうすればよいですか。
Internet NAT ゲートウェイが設定されている場合は、以下の手順でパブリック IP アドレスを確認します:
Q: DSW インスタンスは、個別の SSH ログインを持つ複数ユーザーをサポートしますか。
デフォルトでは、DSW インスタンスは SSH ログイン用に root ユーザーのみを提供します。DSW は、分離された SSH ログインを持つ複数の独立ユーザーの作成をサポートしていません。インスタンス内で追加ユーザーを手動で作成することは可能ですが、公式ではサポートされていない運用です。
Q: VS Code や PyCharm などのローカル IDE から DSW インスタンスに接続すると、ワークスペースファイルが表示されないのはなぜですか。
SSH ログイン後のデフォルトディレクトリは、root ユーザーのホームディレクトリ (/root) である場合があります。ワークスペースファイルは通常、マウントされたデータディスク上のディレクトリ (例:/mnt/workspace) に保存されます。VS Code では、[File] > [Open Folder] を選択して、正しい作業ディレクトリを開いてください。
関連ドキュメント
この方法がシナリオに合わない場合、または追加のネットワークコンポーネントを設定したくない場合は、ProxyClient を使用してリモート接続してください。
VPC 名、IPv4 CIDR ブロック、および vSwitch 情報を設定し、その他のパラメーターはデフォルト値のままにして、OK をクリックして VPC と vSwitch を作成します。



