さくらインターネット環境のPHPからSSH2でアクセスするには

システム部の中村です。

遅くなりましたが、新年明けましておめでとうございます。

先日、実家で父がやっている内装屋の社員旅行があり、みんなでスカイツリーの久々に登ってきましたが、その時、赤坂方面見てみると、しっかり弊社が入っているアークヒルズフロントタワーが映ってました。

スカイツリーから六本木

いやー最近のカメラは性能上がる一方ですね

 

さてお得意様の案件で、

さくらのインターネットのライトプラン(レンタルプラン)で、PHPからSSHで他のサーバーに入り、各アカウントのディレクトリー容量等を定期的に調べないといけない案件の際、さくらインターネットでPHPからSSH接続する方法を記載します。

さくらインターネットさんのレンタルプランではPHPからSSH2関係のコマンドが使えないようになっています。

※ 要は phpinfoでSSHの項目が無い コンパイルされていないわけですね。

できないなら、php.iniで ssh2.so を 読み込めばいいじゃないか!

というわけで、

まずは、soファイル(共有ライブラリのファイル形式)を作ります。

tada,

SSH2のライブラリーをコンパイルするには、

libssh2 を準備しないといけません。

普通であれば、ソースをダウンロードして、”./configure  make make install”すればいいのですが、レンタルサーバー環境なのでもちろん /usr/sbinにアクセスできずコンパイル失敗となります。

なので、自分の領域にコンパイルします。

wget libssh2をダウンロード

tar で解凍

cd libssh2-1.4.3
./configure –prefix=/home/<USERNAME>/www/admin/libssh2/install
make
make install

これで、成功するはずです!

そのあと、同じ要領で、

wget ssh2をダウンロード

tar で解凍

cd ssh2-0.12

追記: phpize と打ち込みconfigure できるようにしてください。

./configure –prefix=/home/<USERNAME>/www/admin/libssh2/install/ –with-ssh2=/home/<USERNAME>/www/admin/libssh2/install/

make

make install  <=これは失敗します。コピー先がどうしても、/usr/sbin になるため

この段階で

ssh2.so が作られるので、

cp ssh2.so /home/<USERNAME>/www/admin/module/

のように適当な場所にコピーをして

PHPを動かす場所にphp.iniを設置し

error_reporting 8191
extension_dir=/home/<USERNAME>/www/admin/module/
extension = ssh2.so

としてやります。

すると、

phpinfo ssh

phpinfoで確認すると、SSHが動作することが確認できます。

soファイルで機能が使いできるので、いろいろ機能を増やしたり、することもこれで可能になるとは思います。

コンパイルできないレンタルサーバーでこれならかなり使い勝手がよくなるかな・・・