ブログ
さくらインターネット環境の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が動作することが確認できます。
soファイルで機能が使いできるので、いろいろ機能を増やしたり、することもこれで可能になるとは思います。
コンパイルできないレンタルサーバーでこれならかなり使い勝手がよくなるかな・・・