SSH 経由でリモートアプリケーションをデバッグする
このチュートリアルでは、SSH トンネルを使用して、開発マシンとリモートホストの間に安全な接続を設定し、そこで実行されている Web アプリケーションをデバッグする方法を説明します。
リモートホストに SSH サーバーをセットアップする
リモートホストが実行しているオペレーティングシステムに応じて、リモートホストへの SSH アクセスを構成します。
リモートデバッグ用に JetBrains SSH サーバーをインストールして構成します。リモートホストで SSH を迅速かつ安全に開始し、ホストへのアクセスに使用できるアクセス資格情報を生成します。
JetBrains SSH サーバーの実行可能ファイル 32 ビット Windows の場合(英語)または 64 ビット Windows の場合(英語)をダウンロードします。
実行可能ファイルを実行します。オプションで、
-port
引数(たとえば、jetbrains_debugger_agent_20230319.24.0 -port=1234
)を使用して目的のポートを指定できます。指定しない場合、ポートはランダムに選択されます。SSH が開始され、出力にアクセス資格情報 (ログイン、パスワード、ポート) が表示されます。
ポートがアクセス可能であることを確認してください。
開発マシンとリモートホストの両方が同じネットワーク内にある必要があります。
または、ファイアウォール / ポート転送は、ネットワークの外部からポートにアクセスできるように構成する必要があります
または、Windows 用の OpenSSH をインストールして構成することもできます。
リモートデバッグ用に JetBrains SSH サーバーをインストールして構成します。リモートホストで SSH を迅速かつ安全に開始し、ホストへのアクセスに使用できるアクセス資格情報を生成します。
JetBrains SSH サーバーユーティリティ x64 ベースの macOS の場合(英語)または M1 ベースの macOS 用(英語)をダウンロードします。
ユーティリティファイルを実行可能にします。例: ターミナルで
chmod +x jetbrains_debugger_agent_20230319.24.0
を実行します。実行可能ファイルを実行します。オプションで、
-port
引数(たとえば、jetbrains_debugger_agent_20230319.24.0 -port=1234
)を使用して目的のポートを指定できます。指定しない場合、ポートはランダムに選択されます。SSH が開始され、出力にアクセス資格情報 (ログイン、パスワード、ポート) が表示されます。
ポートがアクセス可能であることを確認してください。
開発マシンとリモートホストの両方が同じネットワーク内にある必要があります。
または、ファイアウォール / ポート転送は、ネットワークの外部からポートにアクセスできるように構成する必要があります
または、macOS ユーザーガイド: リモートコンピューターから Mac へのアクセスを許可する(英語)説明に従って、SSH を手動で構成します。
リモートデバッグ用に JetBrains SSH サーバーをインストールして構成します。リモートホストで SSH を迅速かつ安全に開始し、ホストへのアクセスに使用できるアクセス資格情報を生成します。
JetBrains SSH サーバーユーティリティ x64 ベースの Linux の場合(英語)、arm64 ベースの Linux 用(英語)、arm32 ベースの Linux 用(英語)をダウンロードします。
ユーティリティファイルを実行可能にします。例: ターミナルで
chmod +x jetbrains_debugger_agent_20230319.24.0
を実行します。実行可能ファイルを実行します。オプションで、
-port
引数(たとえば、jetbrains_debugger_agent_20230319.24.0 -port=1234
)を使用して目的のポートを指定できます。指定しない場合、ポートはランダムに選択されます。SSH が開始され、出力にアクセス資格情報 (ログイン、パスワード、ポート) が表示されます。
ポートがアクセス可能であることを確認してください。
開発マシンとリモートホストの両方が同じネットワーク内にある必要があります。
または、ファイアウォール / ポート転送は、ネットワークの外部からポートにアクセスできるように構成する必要があります
または、OpenSSH サーバー(英語)をインストールして構成します。
Web アプリケーションを作成する
Web アプリケーションがある場合は、そのまま続行できます。それ以外の場合は、サンプル ASP .NET MVC アプリケーションを作成できます。メインメニューから新規ソリューションウィザードを使用します。
を選択し、![新しい ASP.NET MVC アプリケーションの作成 Creating a new ASP.NET MVC application](https://resources.jetbrains.com/help/img/rider/2024.1/ssh_remote_debugging_new_project.png)
リモートホストへの接続を構成する
リモートホストへの接続は、2 つのサブシステムによって使用されます。1 つは SFTP を介してアプリケーションをリモートでデプロイするため、もう 1 つは SSH を介してリモートデバッグセッションを確立するためです。
Ctrl+Alt+S を押すか、メニューから
(Windows および Linux)または (macOS) を選択します。に移動します。
追加
Insert をクリックし、SFTP を選択して、リモートホストの識別に役立つ名前を指定します。
リモートホストのアドレスとアクセス資格情報、およびルートパス(アプリケーションがデプロイされるリモートホスト上のパス)を指定します。このディレクトリがリモートホストに存在することを確認してください。Web ブラウザーアクセスに使用する Web サーバーの URL は、自動的に計算されます。
「設定 / 環境設定」ダイアログを閉じずに、
に進みます。追加
Insert をクリックして、リモートホストの SSH アクセス資格情報を指定します。多くの場合、これらは SFTP 資格情報と同じです。
保存をクリックして設定を保存し、ダイアログを閉じます。
アプリケーションをリモートホストにデプロイする
JetBrains Rider を使用してアプリケーションをデプロイするには、実行構成を作成して使用する必要があります。
以下のいずれかの方法で実行 / デバッグ構成ダイアログを開きます。
メインメニューから
を選択します。ナビゲーションバーが表示された状態( )で、実行 / デバッグ構成セレクターから を選択します。
Alt+Shift+F10 を押してから、0 を押します。
実行 / デバッグ構成ダイアログで、新規構成の追加
Alt+Insert をクリックし、カスタムサーバーへの公開構成タイプを選択して、将来この構成を識別するのに役立つ名前を指定します。
アプリケーションに対応するプロジェクトが正しく選択されていることを確認してください。
リモートサーバーフィールドで、JetBrains Rider 設定 Ctrl+Alt+S の ページで前のステップで作成した SFTP アクセスプロファイルを選択します。
ターゲットマシンによって異なる可能性のある他のオプションを指定します。
OK をクリックして構成を保存し、ダイアログを閉じます。
これで、アプリケーションの準備ができたらすぐに、またはアプリケーションが変更されるたびに、アプリケーションをリモートホストに公開できるようになります。Web アプリケーションにボイラープレートプロジェクトテンプレートを使用したため、公開する準備ができています。
![SSH リモートデバッグ: デプロイ実行 SSH remote debugging. Deployment run](https://resources.jetbrains.com/help/img/rider/2024.1/ssh_remote_debugging_deployment_run.png)
アプリケーションがデプロイされると、リモートホストで実行できます。
メニューから
を選択し、SFTP アクセスプロファイルを選択します。ターミナルウィンドウに新しいセッションが表示されます。アプリケーションのルートフォルダーが WebApplication であると仮定して、次のコマンドを入力します。
cd /[application path]/WebApplication
を使用して、アプリケーションのルートフォルダーに移動します。chmod +x ./WebApplication
必要に応じて実行可能ビットを追加します。ASPNETCORE_URLS=http://0.0.0.0:5000 ./WebApplication
はアプリケーションを実行します
リモートホストでアプリケーションをデバッグする
アプリケーションで、ページの 1 つにアクセスするときにヒットするブレークポイントを設定します。チュートリアルの最初に新しいサンプルプロジェクトを作成した場合は、
HomeController.cs:28
にブレークポイントを設定できます。メニューから
を選択し、リモートホストとアプリケーションを選択します。デバッガーが正常にアタッチされると、ブレークポイントアイコンに緑色のチェックマーク
がマークされます。
デバッガーが接続された状態でアプリケーションが実行されている場合、ブラウザー
http://[remote host name]:5000
でアプリケーション URL を開き、ブレークポイントが設定されているページにアクセスしてみます。
アプリケーションの実行がブレークポイントに達するとすぐに停止し、デバッグできるようになります。
![SSH リモートデバッグ: アプリケーションのデバッグ SSH remote debugging. Debugging the application](https://resources.jetbrains.com/help/img/rider/2024.1/ssh_remote_debugging_debug.png)
リモートデバッグツールのオプションのデプロイ
デバッガーは、ターゲットアプリケーションが実行されているリモートホストに接続するときに、リモートホストにデプロイする必要があるリモートデバッグツール(dotnet 実行可能ファイル、Rider エージェント、それらの依存関係)に依存します。
リモートデバッグツールが見つからない場合、デバッガーは、アプリケーションに初めて接続するときに、サイレントにデプロイします。
ただし、接続ごとにターゲット環境が更新されるシナリオがあります。たとえば、Docker コンテナー内のアプリケーションをデバッグし、アプリケーションを再構築するときに Docker イメージ全体が再構築される場合です。
このような場合、新しいデバッグセッションはそれぞれ、リモートデバッグツールをデプロイすることから開始する必要がありますが、これは時間がかかる場合があります。
この起動遅延を回避するために、デバッガーに接続する前に、リモートデバッグツールをターゲットホストに手動または自動でデプロイできます。
次のいずれかのリンクを使用して、Windows 用のリモートデバッグツールをダウンロードします。
ツールをターゲットマシンの RiderRemoteDebugger ディレクトリまたは Docker イメージに解凍します。例: %LOCALAPPDATA%\JetBrains\RiderRemoteDebugger\2022.1.1
次のリンクのいずれかを使用して、macOS 用のリモートデバッグツールをダウンロードします。
ツールをターゲットマシンの RiderRemoteDebugger ディレクトリまたは Docker イメージに解凍します。例: /.local/share/JetBrains/RiderRemoteDebugger/2022.1.1
抽出されたすべてのファイルに次のコマンドを適用します。
xattr -d com.apple.quarantine FILE_NAME
次のリンクのいずれかを使用して、Linux 用のリモートデバッグツールをダウンロードします。
ツールをターゲットマシンの RiderRemoteDebugger ディレクトリまたは Docker イメージに解凍します。例: ~/.local/share/JetBrains/RiderRemoteDebugger/2022.1.1
関連ページ:
![](https://resources.jetbrains.com/help/img/rider/2024.1/run_debug_config_menu_with_temp_and_permanent_configs.png)
実行 / デバッグ構成
JetBrains Rider は、実行 / デバッグ構成を使用して、コードを実行、デバッグ、デプロイ、テストします。各構成は、何を実行し、どのパラメーターと環境を使用するかを定義する、名前付きのスタートアッププロパティのセットです。実行 / デバッグ構成には 2 つのタイプがあります。一時的 — エディターから .NET 静的メソッドを実行 / デバッグするたびに作成されます。永続的 — テンプレートから明示的に作成されるか、一時的な構成を保存することによって作成されます。永続的な構成は、削除するま...
![](https://resources.jetbrains.com/help/img/rider/2024.1/rdr_mainWindow_new.png)
ユーザーインターフェース
JetBrains Rider でソリューションを開くと、デフォルトのユーザーインターフェースは次のようになります。プラグインのセットと構成設定によっては、IDE の外観と動作が異なる場合があります。ナビゲーションバー:フォーカス: 表示 / 非表示: ナビゲーションバーはソリューションエクスプローラーの代わりとなるもので、ソリューションの構造を確認したり、特定のファイルを開いたり、現在のファイル内の特定のコード要素に移動したりできます。メインウィンドウの下部にあるステータスバーにあります。ナビゲ...
![](https://pleiades.io/icons/rider.png)
実行 / デバッグ構成ダイアログ
このダイアログを使用して、実行 / デバッグ構成を作成、編集、調整、削除したり、新しく作成されたすべての実行 / デバッグ構成に適用されるデフォルトのテンプレートを構成したりします。既存の実行 / デバッグ構成は、構成タイプごとにグループ化されています。新しい構成を作成するためのテンプレートは編集可能であり、ダイアログの左側のペインにある構成テンプレートの編集…リンクから利用できます。共通設定:実行構成を編集するとき(ただし実行構成テンプレートは編集しないとき)、次のオプションを指定できます。...
![](https://resources.jetbrains.com/help/img/rider/2024.1/debug_parallel_stacks.png)
マルチスレッドアプリケーションのデバッグ
マルチスレッドアプリケーションは、一度に複数のスレッドを追跡する必要があるため、デバッグは常に困難です。さらに、マルチスレッドアプリケーションでは、不均一なワークロード分散、ロック競合、シリアライズされた実行などの新しいタイプのバグやパフォーマンスの問題が発生します。デバッグセッションのステップ実行から得られるシーケンシャルフローのような錯覚は、マルチスレッドアプリのデバッグ中は役に立たず、誤解を招く可能性があります。同時実行のバグとなる可能性のある問題を調査する場合は、逐次ステップではなくブレ...