PHPのssh2://ストリームラッパーとは?使い方とコンテキストオプションを解説
はじめに
libssh2ライブラリは、暗号化された安全な通信経路を通じて、リモートマシン上のリソースへのアクセスを提供します。アクセスできる機能には、シェル操作、リモートコマンド実行(exec)、トンネリング、ファイル転送(SFTP)、SCPなどがあります。
PHPでは、これらのリソースに対応するストリームラッパーが用意されており、それぞれssh2.shell://、ssh2.exec://、ssh2.tunnel://、ssh2.sftp://、ssh2.scp://として利用できます。
なお、これらのラッパーはデフォルトでは有効になっていません。利用するには、PECLから提供されているSSH2拡張モジュールを別途インストールする必要があります。インストール後はphp.iniで拡張モジュールを有効にすることで、fopen()やfile_get_contents()などの標準的なファイルシステム関数からSSH接続を透過的に扱えるようになります。
基本的な使い方
各ラッパーは以下のような形式で記述します。URLスキームの後にユーザー名・パスワード・ホスト名・ポート番号を指定し、最後にパスやコマンドを続けます。
ssh2.shell://user:pass@example.com:22/xterm ssh2.exec://user:pass@example.com:22/usr/local/bin/somecmd ssh2.tunnel://user:pass@example.com:22/192.168.0.1:14 ssh2.sftp://user:pass@example.com:22/path/to/filename
上記の例では、それぞれ次のような用途を表しています。
- ssh2.shell://:リモートマシン上で対話型シェル(xterm)を開く
- ssh2.exec://:指定したコマンド(/usr/local/bin/somecmd)をリモートで実行する
- ssh2.tunnel://:リモートマシン経由で内部ネットワーク(192.168.0.1:14)へのトンネルを確立する
- ssh2.sftp://:SFTPプロトコルを使ってリモートファイルにアクセスする
また、scpによるファイル転送にはssh2.scp://ラッパーを使用します。
ssh2.*// のコンテキストオプション
stream_context_create()で作成したコンテキストを使うことで、SSH接続の詳細な挙動を制御できます。主なオプションは以下のとおりです。
| session | 再利用する事前接続済みのssh2リソースを指定します |
|---|---|
| sftp | 再利用する事前割り当て済みのsftpリソースを指定します |
| methods | 鍵交換、ホスト鍵、暗号方式、圧縮、MAC方式などの設定、およびコールバックの指定を行います |
| username | 接続時に使用するユーザー名を指定します |
| password | パスワード認証で使用するパスワードを指定します |
| pubkey_file | 認証に使用する公開鍵ファイルの名前を指定します |
| privkey_file | 認証に使用する秘密鍵ファイルの名前を指定します |
| env | 設定する環境変数を連想配列で指定します |
| term | ptyを割り当てる際に要求する端末エミュレーションの種類を指定します |
| term_width | ptyを割り当てる際に要求する端末の幅を指定します |
| term_height | ptyを割り当てる際に要求する端末の高さを指定します |
| term_units | term_widthおよびterm_heightで使用する単位を指定します |
補足:公開鍵認証の活用
パスワード認証の代わりに、pubkey_fileとprivkey_fileオプションを組み合わせて公開鍵認証を利用すると、より安全な接続が可能になります。URL内にパスワードを含める必要がなくなるため、スクリプトの可読性とセキュリティの両面でメリットがあります。
-
【初心者向け】PHPタグとは?基本構文からショートタグまで徹底解説
PHPタグとは?定義と基本的な使い方PHPスクリプトは、拡張子が「.php」のテキストファイルとして作成され、Webサーバー上に保存されます。サーバー上のPHPパーサーは、<?php(開始タグ)と?>(終了タグ)という特殊な文字列を探し出します。この2つのタグは「PHPタグ」と呼ばれ、その間に記述されたステートメントのみがパーサーによって解釈・実行されます。PHPタグで囲まれたコードは、HTMLドキュメントの中に自由に埋め込むことができます。埋め込まれたPHPコードはサーバー側で実行され、その処理結果だけが出力されるため、残りのHTML部分はクライアントのブラウザーにあるHTMLパ
-
PHPのpi()関数とは?使い方と定義済み定数との対応を実例付きで解説
pi()関数の定義と使い方PHPのpi()関数は、数学定数π(円周率)の値を返す関数です。戻り値はfloat型の「3.14159265359」であり、PHPにあらかじめ定義されている定数M_PIとまったく同じ値になります。構文pi ( void ) : floatパラメータこの関数は引数を受け取りません。引数なしでそのまま呼び出すことができます。戻り値pi()関数は数学定数πの値を返し、定義済みの数学定数M_PIと等価です。数式の中では、M_PIの代わりにpi()関数を使うこともできます。対応するPHPバージョンこの関数はPHP 4.x、PHP 5.x、PHP 7.xのすべてのバージョンで利用