phpで、scp

ブログ | 2012/4/2 00:10
sudo pecl install ssh2
としたら、エラーが出たので、
sudo port install libssh2
sudo pecl install ssh2  channel://pecl.php.net/ssh2-0.11.3

インストールの途中で、libssh2のprefixを聞かれるので、/opt/localを入力。
libssh2 prefix? [autodetect] : /opt/local

で、php.iniに
extension=ssh2.so
に追加かな。macportsなら
/opt/local/var/db/php5/ssh2.ini に。

で、phpで
http://www.php.net/manual/ja/ref.ssh2.php
を参考に
<?php

$methods = array(
 'kex' => 'diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1',
 'client_to_server' => array(
   'crypt' => '3des-cbc',
   'comp' => 'none'
 ),
 'hostkey'=>'ssh-rsa',
 'server_to_client' => array(
   'crypt' => 'aes256-cbc,aes192-cbc,aes128-cbc',
   'comp' => 'none'
 )
);

$conn = ssh2_connect('ip', port, $methods);
if(ssh2_auth_pubkey_file($conn, 'username',
                         '/path/to/.ssh/id_dsa.pub',
                         '/path/to/.ssh/id_dsa', 'secret')) {
 echo "Public Key Authentication Successful";
 ssh2_scp_send($conn, '/local/filename', '/remote/filename', 0644);
} else {
 die('Public Key Authentication Failed');
}

?>

ssh2_exec とか、ssh2_sftp_xxxxx
なんてのもあるから、いろいろできそう。
▼追記 2012/4/3 17:44
centOSの場合、

yum -y install libssh2 libssh2-devel
pecl install ssh2
pecl install ssh2 channel://pecl.php.net/ssh2-0.11.3
--------------------
libssh2 prefix? [/usr] : /usr/lib64
--------------------

emacs /etc/php.d/ssh2.ini
--------------------
extension=ssh2.so
--------------------
▼追記 2012/4/14 17:48
これ、webからだと、ssh2_auth_pubkey_file だとうまくなかったので、
ssh2_auth_password にしたんでした。
タグ
php | ssh | scp
縮小 拡大

ログインしておくと、後で編集が可能です。

Rottel内コンテンツ

ユーザー一覧

Rottelとは?
利用規約
開発飲料
利用者の声
ヘルプ
close