IntelliJ IDEAやPyCharmなどには、
リモートインタープリターという機能があり、
この機能を使うと、RemoteHostのPython等でデバッグをすることができます。
※Ultimate版の機能です。

この機能は、公式ドキュメントの手順通りで利用できます。

リモートPythonインタープリターの構成 | IntelliJ IDEA
https://pleiades.io/help/idea/configuring-remote-python-sdks.html

が、
いくつかの設定が関連しているので、
設定の関係を理解していないと、
環境が変わった時などの、設定変更に困ってしまいます。

このような課題に対応するため、
このエントリではこれらの設定の関連を整理したいと思います。

リモートインタプリター機能を図に示すと、次のようになります。
※Pythonの場合。以降、Python想定で記載します。

SSHリモートインタプリターの概要

IDEAからスクリプトを起動すると、

  1. ソースコードをRemoteHostにコピー
  2. RemoteHostのPythonで、ソースコードを実行

という流れで、処理が実行されます。

先ほどの図に、
これを実現するために必要な設定を加えたものが、次の図になります。

SSHリモートインタプリターの設定

次の4つの設定が必要になります。

  1. SSHの設定 ... RemoteHostへの接続情報
  2. Deploymentの設定 ... RemoteHostの配備先パスの情報
  3. SDKの設定 ... Pythonコマンドのパスの情報
  4. Mappingの設定 ... Project配下・Remoteの配備先パスの対応情報

SSHの設定は、
Preferences -> Tools -> SSH Configurations から設定ができ、
設定ファイルはsshConfigs.xmlです。

Deploymentの設定は、
Preferences -> Build,Execution,Deployment -> Deployment から設定ができ、
設定ファイルはwebServers.xmlです。

SDKの設定は、
Project Structure -> SDKs から設定ができ、
設定ファイルはjdk.table.xmlです。

Mappingの設定は、
Preferences -> Build,Execution,Deployment -> Deployment で、
利用するDeploymentを選択した後の、Mappingsタブから設定ができ、
設定ファイルは.idea/deployment.xmlです。

Mappingの設定以外は、IDEA全体の設定、
Mappingの設定は、プロジェクト毎の設定です。

# IDEA全体の設定ファイルは、
# ~/Library/Application Support/JetBrains/IntelliJIdea2021.3/options/
# 等にあります(macosの場合)。

これらの設定には、次の依存関係があります。
SSHの設定 <- Deploymentの設定 <- SDKの設定

図に示すと、以下のとおり。

SSHリモートインタプリターの設定の依存関係

これらの設定によって、
IDEAからスクリプトを起動すると、

  1. ソースコードをRemoteHostにコピー
    (Mappingの設定に従って、RemoteHostにファイルをコピー)
  2. RemoteHostのPythonで、ソースコードを実行
    (SDKの設定で指定されたPythonコマンドを実行)

という処理が実施されます。

環境の変更や、設定を変更してリモートインタープリターが上手く動かなくなった時は、
これらの設定をチェックしてみてください。

一つ注意点ですが、
Deploymentの設定は、Visible only for this projectをチェックすることで、
プロジェクト毎の設定に出来るのですが。
SDK(IDEA全体の設定)が依存出来なくなるので、チェックしてはいけません。