Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

SSH の使用法

%Net.SSH パッケージは、SSH (Secure ShellOpens in a new tab) 通信のサポートを提供します。このトピックでは、このパッケージに含まれているクラスについて簡単に説明します。

Caution:

OpenSSL 3.0 では、プロバイダの新しい構想として、アルゴリズム実装のグループをパッケージ化する手法が導入されています。プロバイダの 1 つにレガシー・プロバイダがあります。OpenSSL でもインターシステムズでも、既定ではレガシー・プロバイダはロードされません。

レガシー・プロバイダのアルゴリズムを使用しないことをお勧めします。このようなすべてのアルゴリズムは、OpenSSL のドキュメントOpens in a new tabを参照してください。インターシステムズでは、InterSystems IRIS とレガシー・アルゴリズムとの互換性を保証できません。

SSH セッションの作成

%Net.SSH.SessionOpens in a new tab は SSH セッションを表します。このクラスを使用するには、以下の手順を実行します。

  1. クラスのインスタンスを作成します。

  2. Connect() インスタンスのメソッドを使用して、サーバに接続します。

  3. AuthenticateWithKeyPair()AuthenticateWithUsername()、または AuthenticateWithKeyboardInteractive() を使用して自身をサーバに対して認証します。詳細は、%Net.SSH.SessionOpens in a new tab のクラス・リファレンスを参照してください。

  4. %Net.SSH.SessionOpens in a new tab のその他のメソッドを使用して、リモート・システムとの間での単一ファイルの SCP (Secure Copy) 操作の実行、リモート・コマンドの実行、TCP トラフィックのトンネル、または SFTP 操作の実行を行います。クラス・リファレンスの %Net.SSH.SessionOpens in a new tab を参照してください。

    例えば、OpenSFTP を使用して、SFTP 操作のセッションを使用します。このメソッドは、SFTP 操作に使用できる %Net.SSH.SFTPOpens in a new tab のインスタンスを参照で返します。次のセクションに示した用例を参照してください。

Important:
  • これらのクラスを使用できるサポート・プラットフォームの詳細は、%Net.SSH.SessionOpens in a new tab および %Net.SSH.SFTPOpens in a new tab のクラス・リファレンスを参照してください。

  • OpenSSL 3.0 を使用する SSH 接続では、暗号化アルゴリズムとして Blowfish も CAST もサポートしていません。そのような接続を確立しようとすると接続に失敗します。

例 : SFTP 経由のファイルのリスト作成

次のメソッドは、SFTP を経由してサーバ上のファイルのリストを作成する方法を示しています。

Method SFTPDir(ftpserver, username, password) As %Status
{
    set ssh = ##class(%Net.SSH.Session).%New()
    set status = ssh.Connect(ftpserver)
    set status = ssh.AuthenticateWithUsername(username,password)
    //open an SFTP session and get that returned by reference
    set status = ssh.OpenSFTP(.sftp)
    //get a list of files
    set status = sftp.Dir(".",.files)
    set i=$ORDER(files(""))
    while i'="" {
        write $listget(files(i),1),!
        set i=$ORDER(files(i))
    }
    quit $$$OK
}

例 : キーボード・インタラクティブによる認証

以下のターミナル・セッションは AuthenticateWithKeyboardInteractive() の使用方法を示しています。

%SYS>set host="192.168.2.100"
%SYS>set lambda="(u,i,p,f,c)  quit $listbuild(c(""password""))"
%SYS>set context("password")="fountain"
%SYS>set sess=##class(%Net.SSH.Session).%New()
%SYS>s status=sess.Connect(host)
%SYS>set status=sess.AuthenticateWithKeyboardInteractive("root",lambda,.context)

その他の例

その他の SSH の例については、任意の IDE で %Net.SSH.SessionOpens in a new tab を開き、このクラスの TestExecute() メソッドと TestForwardPort() メソッドを参照してください。

FeedbackOpens in a new tab