直接 SSH 接続は、ローカルターミナルまたは VS Code から DSW インスタンスに接続する際に推奨される方法です。安定した高速な接続を提供します。
制限事項
サポートされていないインスタンスタイプ:
パブリックリソースグループ内の
ecs.ebmで始まるリソース仕様は、SSH リモート接続をサポートしていません。パブリックネットワーク接続の制限:
パブリックネットワーク経由で DSW インスタンスに接続すると、PAI は NAT ゲートウェイに DNAT ルールを自動的に作成します。手動での設定は不要です。
各 NAT ゲートウェイは最大 100 個の DNAT ルールをサポートしているため、最大 100 個の DSW インスタンスが同時に接続できます。クォータの詳細については、「クォータ」をご参照ください。
課金
DSW インスタンスへのパブリックネットワーク接続には、NAT ゲートウェイ、Elastic IP アドレス (EIP)、またはNetwork Load Balancer (NLB) が必要です。NAT ゲートウェイ、EIP、および NLB は独立して課金され、DSW インスタンスが停止している場合でも料金が発生し続けます。これらのリソースが不要になった場合は、削除してください。
操作手順
ステップ 1:内部 DNS 名前解決の有効化
Private DNS を有効にします。DSW インスタンスは VPC 内にデプロイされ、SSH 接続はインスタンスの IP アドレスを解決するために内部 DNS 名前解決に依存します。接続する前に内部 DNS 名前解決を有効にしてください。
ステップ 2:SSH 公開鍵の生成
クライアントで次のコマンドを実行して、公開鍵を生成します。パスフレーズの入力を求められます。このトピックのシナリオ例のようにremote_ikernelツールを使用する予定の場合は、Enter キーを押してパスフレーズをスキップしてください。
デフォルトディレクトリでの公開鍵の生成 (推奨)
次のコマンドを実行します。
ssh-keygenこのコマンドは、以下のデフォルトディレクトリに公開鍵 (id_rsa.pub) と秘密鍵 (id_rsa) を生成します。SSH キーペアがすでに存在する場合、ファイルは上書きされます。
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 パラメーターの設定
DSW インスタンスを作成する際に、以下のネットワークパラメーターを設定します。
既存のインスタンスの場合、設定の変更 をクリックして対応するパラメーターを変更し、その後 OK をクリックして変更を適用します。
パラメーター | 説明 |
[VPC の設定]、[vSwitch]、[セキュリティグループ] | パブリックリソースで DSW インスタンスを作成する場合は、VPC の設定、vSwitch、および セキュリティグループ を設定します。詳細な手順については、「VPC と vSwitch の作成」および「セキュリティグループの管理」をご参照ください。VPC とセキュリティグループは、DSW インスタンスと同じリージョンにある必要があります。 重要 セキュリティグループの インバウンド ルールで、クライアントの IP アドレスからポート 22 への TCP トラフィックを許可してください。 |
[SSH の有効化] | このスイッチをオンにし、ステップ 2 で生成された公開キーファイル |
[サービスアクセスとポート設定] | SSH の有効化 を有効にすると、SSH サービスが表示されます。
|
[インスタンスへのパブリックアクセス] | パブリックネットワークアクセスに必要です。[DNAT + EIP] を選択します。
NAT ゲートウェイと EIP を作成するには、次の手順に従います。 または、[NLB] を選択します。NLB インスタンスを作成する際、[Instance Network Type] を [Public] に設定し、DSW インスタンスと同じ VPC を選択します。詳細については、「IPv4負荷分散のためのNLB入門」をご参照ください。 説明 複数の DSW インスタンスが同じ DNAT と EIP (または NLB) を共有する場合、インスタンスごとに異なるパブリックアクセスポートを使用してください。 |
ステップ 4:SSH サーバーのインストール
DSW インスタンスのターミナルで次のコマンドを実行し、SSH サービスが実行中かどうかを確認します。
公式のビルド済みイメージおよびそれらから派生したカスタムイメージには、デフォルトで SSH サーバーがインストールされ、起動されています。
service ssh statusSSH サービスが実行されていない場合は、DSW インスタンスのターミナルで次のコマンドを実行して SSH サーバーをインストールします。
sudo apt-get update
sudo apt-get install openssh-server
sudo service ssh startsudo が利用できない場合は、まず apt-get install sudo を実行してから再試行してください。
ステップ 5:DSW インスタンスへの接続
接続方法を表示します。
DSW ページで、インスタンス名をクリックしてインスタンス詳細ページを開きます。インスタンスの設定 タブの ネットワーク設定 セクションに移動して、パブリックネットワークアクセス方法とVPC アクセス方法を確認します。
説明SSH 設定でパブリックネットワークアクセスが有効になっていない場合、VPC アクセス方法のみが表示されます。
DSW インスタンスに接続します。
SSH を使用した接続
パブリックネットワークアクセス
ローカルのコマンドラインツールまたはターミナルで、前のステップで取得したパブリックネットワークアクセス方法を使用して DSW インスタンスに接続します。
ssh root@xx.xx.xx.xx -p 1024 # 秘密鍵がデフォルトパスにない場合は、そのパスを指定します ssh -i /your/path/example_rsa root@xx.xx.xx.xx -p 1024重要-pパラメーターの値 1024 は、SSH 用に設定されたパブリックアクセスポートです。VPC アクセス
VPC 内の別のターミナル (ECS インスタンスなど) から、前のステップで取得した 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: Connect to Host...] コマンドを選択してリモート接続を開始します。左下隅の
をクリックして 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 の上部にある [Jupyter カーネルの選択] ドロップダウンで、推奨される [Python 3 (ipykernel)] カーネルを選択します。
例:ローカルの Notebook コードを DSW インスタンスで実行する
前提条件
このトピックのステップ 1〜4 を完了してください。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 --showVS Code で Notebook ファイルを開きます。右上隅のカーネルセレクターをクリックし、検索ボックスから [Remote Python] を選択します。
よくある質問
Q:直接 SSH 接続と ProxyClient プロキシの違いは何ですか?
Q:SSH 接続の失敗、タイムアウト、またはキーの拒否のトラブルシューティング方法を教えてください。
次のカテゴリに基づいて問題をトラブルシューティングしてください。
パブリックネットワーク接続の失敗
セキュリティグループのインバウンドルールで、クライアントの IP アドレスからポート 22 への TCP トラフィックを許可してください。
VPC に複数のインターネット NAT ゲートウェイがある場合は、「高可用性のための単一AZ NATゲートウェイのデプロイ」を参照して、NAT ゲートウェイ、vSwitch、およびルートテーブル間のルーティング関係を確認してください。
NAT ゲートウェイが 1 つしかない場合は、セルフサービスのトラブルシューティングツールを使用してネットワークの到達可能性を分析してください。
VPC 内部接続の失敗
クライアントと DSW インスタンスが同じ VPC 内にあり、内部 DNS 名前解決が有効になっていることを確認してください。
カスタムイメージを使用する場合は、SSH サーバーがインストールされ、起動していることを確認してください。詳細については、「ステップ 4:SSH サーバーのインストール」をご参照ください。
セキュリティグループのインバウンドルールで、クライアントの IP アドレスからポート 22 への TCP トラフィックが許可されていることを確認してください。
Permission denied (キー拒否)
公開鍵 (
id_rsa.pub) の完全な内容が DSW インスタンスの SSH 設定に追加されていることを確認してください。SSH コマンドで使用される秘密鍵が公開鍵と一致していることを確認してください。秘密鍵がデフォルトパス (
~/.ssh/id_rsa) にない場合は、-iパラメーターで指定します。
VS Code 接続の失敗
Remote - SSH拡張機能がインストールされていること、および SSH コマンドが完全に入力されていることを確認してください (たとえば、ssh root@xx.xx.xx.xx -p 1024)。まずローカルターミナルで接続をテストします。基本的な接続が成功した後、VS Code の設定をトラブルシューティングしてください。
"pipe does not exist" というエラーが表示された場合は、VS Code を再起動するか、Remote - SSH 拡張機能を再インストールしてください。
Q:PyCharm または他のローカル IDE を使用して DSW インスタンスに接続できますか?
はい。ネイティブの SSH プロトコルに基づくすべての機能がサポートされています。PyCharm を使用する場合、DSW インスタンスにサーバー側のコンポーネントが自動的にダウンロードおよびインストールされます。したがって、DSW インスタンスにはパブリックネットワークアクセスが必要です。
Q:インスタンスのパブリック IP アドレスを確認する方法は?
NAT ゲートウェイが設定されている場合は、次の手順に従ってパブリック IP アドレスを確認してください。
Q:DSW インスタンスは複数の SSH ユーザーをサポートしていますか?
デフォルトでは、DSW インスタンスは root ユーザーとしての SSH ログインのみをサポートしています。複数のユーザーを作成して個別に SSH アクセスを行うことは、正式にはサポートされていません。インスタンス内で手動でユーザーを作成することはできますが、この構成はサポート対象外です。
Q:ローカル IDE を介して接続した後、ワークスペースファイルが表示されません。どうすればよいですか?
SSH でログインすると、デフォルトのディレクトリは root ユーザーのホームディレクトリ (/root) です。ワークスペースファイルは、通常 /mnt/workspace などのマウントされたデータディスク上にあります。VS Code で、[ファイル] > [フォルダーを開く] に移動し、正しいディレクトリを選択します。
関連ドキュメント
この方法がシナリオに適していない場合、または追加のネットワークコンポーネントを設定したくない場合は、リモート接続にProxyClientをお試しください。