sgcSSH 機能一覧
sgcSSH でできることすべてを、3 つのクライアントコンポーネント、2 つのサーバーコンポーネント、そしてそれらがネゴシエートするアルゴリズムに対応付けて示します。同じクラスが Delphi と .NET に存在し、すべてのライセンスに完全なソースコードが付属します。
sgcSSH でできることすべてを、3 つのクライアントコンポーネント、2 つのサーバーコンポーネント、そしてそれらがネゴシエートするアルゴリズムに対応付けて示します。同じクラスが Delphi と .NET に存在し、すべてのライセンスに完全なソースコードが付属します。
コマンド、シェル、フォワーディング、rekey
高速転送、同時処理 16 リクエスト
ファイルとフォルダーごと
認証、exec、シェル、サブシステム
ユーザーごとのジェイル、読み取り専用モード
ポスト量子鍵交換を最優先
Delphi 7 から 13 と .NET
sgcSSH は単体で完結しています。sgcWebSockets Core ランタイムを同梱して出荷され、Delphi のコンポーネントの土台となる sgcCustomIndy アドオンも、注文に常に含まれます。
sgcWebSockets にも含まれます。5 つのコンポーネントはすべて sgcWebSockets の Enterprise にも含まれ、All-Access にはすべてが含まれます。.NET では、無償の Community エディションではなく登録版パッケージに含まれます。sgcSSH は、SSH と SFTP だけを必要とするチーム向けの単体パッケージです。
クライアント 3 つとサーバー 2 つが、SGC SSH パレットページに登録されます。
| コンポーネント | クラス | 役割 | 説明 |
|---|---|---|---|
| SSH クライアント | TsgcSSHClient | コマンドを実行 | リモートコマンド、pty 付きの対話型シェル、ローカルとリモートのポートフォワーディング、長時間続くセッションの rekey です。 |
| SFTP クライアント | TsgcSFTPClient | ファイルを転送 | 同時処理 16 リクエストの SFTP v3 ファイルマネージャー操作で、100 MB の転送がローカルネットワークで約 1 秒です。 |
| SCP クライアント | TsgcSCPClient | ファイルとフォルダーをコピー | scp で単一ファイルやフォルダーツリー全体をアップロード、ダウンロードし、必要に応じてファイルの日時を保持します。 |
| SSH サーバー | TsgcSSHServer | SSH クライアントを受け入れ | パスワード認証と公開鍵認証、exec、shell、サブシステムの各要求に対応し、Ed25519、ECDSA、RSA のホスト鍵を使えます。 |
| SFTP サーバー | TsgcSFTPServer | フォルダーを公開 | ルートフォルダーから SFTP v3 と SCP を提供し、ユーザーごとのジェイル、読み取り専用モード、操作ごとに許可または拒否するイベントを備えます。 |
TsgcSSHClient は認証済みの SSH 接続を 1 つ開き、その上で必要な数だけチャネルを実行します。
| 機能 | API | 備考 |
|---|---|---|
| 接続 | Host, Port, Connect, Disconnect | ポートの既定値は 22 です。 |
| パスワード認証 | Authentication.Username, Authentication.Password | ユーザー名とパスワードによる通常のサインインです。 |
| 公開鍵認証 | Authentication.PrivateKeyFile, Authentication.Passphrase | PEM または PKCS#8 ファイルの Ed25519、ECDSA、RSA 秘密鍵に対応し、.NET では OpenSSH 形式にも対応します。 |
| ホスト鍵の確認 | OnSSHHostKey | 鍵の種類とフィンガープリントを受け取るので、known hosts の保存先と照合し、未知の鍵や変更された鍵を拒否できます。 |
| リモートコマンド | Execute | チャネルを開いてコマンドを実行し、その出力を文字列として返します。タイムアウトも指定できます。 |
| 対話型シェル | OpenChannel, RequestPTY, RequestShell | 端末の種類とサイズを指定した端末セッションです。 |
| シェルの入出力 | SendChannelData, OnSSHChannelData | ユーザーの入力を送り、サーバーの出力を受け取ります。 |
| 端末の制御 | SendWindowChange, SendSignal, SendEOF | 端末のリサイズ、シグナルの送信、チャネル入力の終了を行います。 |
| exec とサブシステムのチャネル | RequestExec, RequestSubsystem | SSH 上の独自プロトコル向けの低レベルなチャネル要求です。 |
| ローカルポートフォワーディング | OpenDirectTCPIP | サーバーから到達できるホストとポートへの direct-tcpip チャネルを開きます。 |
| リモートポートフォワーディング | RequestForwarding, CancelForwarding | サーバーにポートでリッスンさせ、その接続をクライアントへ転送するよう依頼します。 |
| Rekey | Rekey | 長時間続く接続のセッション鍵を更新します。 |
| ポスト量子鍵交換 | PostQuantumKex | 既定でオン: mlkem768x25519-sha256 を最初に提示します。 |
TsgcSFTPClient は、同じ SSH トランスポートの上で SFTP v3 を実装し、SSH クライアントと同じ認証オプションと鍵交換オプションを備えます。
| 機能 | API | 備考 |
|---|---|---|
| ホームフォルダー | RealPath | . のようなパスを、サーバー上の絶対パスに解決します。 |
| フォルダー一覧 | ListDirectory | 各エントリの名前、サイズ、更新日時、フォルダーフラグを返します。 |
| アップロードとダウンロード | Put, Get | ファイル 1 つにつき 1 回の呼び出しで、16 件のリクエストを同時に処理します。100 MB の転送がローカルネットワークで約 1 秒です。 |
| ファイル管理 | Rename, Delete, MakeDirectory, RemoveDirectory | ファイルマネージャーに必要な操作がすべて揃います。 |
| 進行状況 | OnSFTPProgress | 転送済みバイト数を通知します。そのままプログレスバーに使えます。 |
TsgcSCPClient は、scp コマンドを許可している任意のサーバーへ、SSH 経由でファイルをコピーします。
| 機能 | API | 備考 |
|---|---|---|
| 単一ファイル | Upload, Download | リモートパスとの間で 1 つのファイルをコピーします。 |
| フォルダーツリー | UploadFolder, DownloadFolder | フォルダー全体を再帰的にコピーします。 |
| ファイルの日時 | PreserveTimes | 更新日時とアクセス日時を相手側にも保持します。 |
| 進行状況 | OnSCPProgress | ファイル名と転送済みバイト数を通知します。 |
TsgcSSHServer は、標準の ssh、sftp、scp コマンドラインツールを含め、標準的な SSH クライアントであればどれでも受け入れます。
| 機能 | API | 備考 |
|---|---|---|
| リッスン | Port, Active | サーバーを開始、停止します。 |
| ホスト鍵 | HostKeyFiles, GenerateHostKeyEd25519 | Ed25519、ECDSA、RSA のホスト鍵に対応します。クラスプロシージャが Ed25519 の鍵ファイルを作成します。 |
| パスワード認証 | OnSSHAuthPassword | 自社のユーザーストアに対して、ユーザー名とパスワードを確認します。 |
| 公開鍵認証 | OnSSHAuthPublicKey | 鍵の種類とその SHA256 フィンガープリントを受け取るので、把握している鍵だけを受け入れられます。 |
| リモートコマンド | OnSSHExec, SendChannelData, SendExitStatus, CloseChannel | コマンドに応答し、終了ステータスを通知して、チャネルを閉じます。 |
| 対話型シェル | OnSSHShell, OnSSHChannelData | 自分のコードから端末セッションを提供します。 |
| サブシステム | SFTPServer | sftp などのサブシステム要求は、リンクした TsgcSFTPServer に振り分けられます。 |
| 接続イベント | OnSSHConnect, OnSSHDisconnect | すべての接続を、接続元アドレスとともにログに記録します。 |
TsgcSFTPServer は TsgcSSHServer に接続し、クライアントが外に出られないフォルダーからファイルを提供します。
| 機能 | API | 備考 |
|---|---|---|
| プロトコル | SFTP, SCP | SFTP v3 に加え、有効にすると scp 転送にも対応します。 |
| ルートフォルダー | RootFolder | クライアントに見せるフォルダーです。その外側のパスは拒否されます。 |
| ユーザーごとのフォルダー | OnSFTPUserRoot | 各ユーザーのルートを返すので、ユーザーは自分のファイルだけを見られます。 |
| 読み取り専用モード | ReadOnly | アップロード、削除、名前変更を拒否します。 |
| 操作ごとの制御 | OnSFTPOperation | 読み取りまたは書き込みでの open、remove、rename、フォルダーの作成と削除、属性変更、一覧取得のたびに発生します。aAccept を False にすると、クライアントには権限拒否のエラーが返されます。 |
| 大きなダウンロード | フロー制御 | ファイルサイズに関係なく、ダウンロード時のメモリ使用量は一定です。 |
クライアントとサーバーは最も強力なアルゴリズムから順に提示し、相手側が必要とする場合にのみ従来のアルゴリズムにフォールバックします。
| 領域 | アルゴリズム | 備考 |
|---|---|---|
| 鍵交換 | mlkem768x25519-sha256 | ML-KEM-768 と X25519 の組み合わせで、最新の SSH リリースの既定です。クライアントとサーバーの両方が最初に提示します。 |
| 従来の鍵交換 | curve25519, ECDH, Diffie-Hellman group14 と group16 | 相手側がハイブリッド交換に対応していない場合に使用します。 |
| 暗号 | AES-GCM, AES-CTR | .NET 8 以降では AES-GCM がハードウェアアクセラレーションされます。 |
| ホスト鍵とユーザー鍵 | Ed25519, ECDSA, RSA | SHA-2 による RSA 署名で、server-sig-algs を通じて選択されます。 |
| 鍵ファイル | PEM, PKCS#8, OpenSSH (.NET) | 暗号化された秘密鍵は、パスフレーズで開きます。 |
| 厳格な鍵交換 | Terrapin 対策 | SSH ハンドシェイクに対するプレフィックス切り詰め攻撃を防ぎます。 |
Delphi と .NET で同じ 5 つのコンポーネントを提供します。
| 領域 | 内容 |
|---|---|
| Delphi | Delphi 7 から 13 まで。VCL、FMX、コンソールアプリケーション、サービスに対応します。 |
| Delphi のターゲット | Windows Win32、Windows Win64、Linux64。 |
| .NET | .NET 8、.NET 9、.NET 10、.NET Standard 2.0。完全マネージドコードで、OpenSSL は不要です。 |
| デモ | Demos\27.SSH: SSH クライアント、SFTP クライアント、SCP クライアント、SSH サーバー、SFTP サーバー。 |
| エディション | 5 つのコンポーネントはすべて sgcWebSockets Enterprise にも含まれ、All-Access にはすべてが含まれます。.NET では登録版パッケージに含まれ、Community エディションには含まれません。 |
| ライセンス | 単体で提供されます。sgcWebSockets Core ランタイムを同梱し、sgcCustomIndy は注文に含まれ、完全なソースコードも付属します。 |