PHPでSFTP接続
PHPでSFTP接続する際ssh2_sftpを使うのが良さそうだったので、
ssh2_sftpを使って実装してみました。
事前準備
SSH2関数がインストールされていない場合、pcelコマンドでSSH2をインストールするとよいです。
pecl install ssh2return
SSH2関数が入っていない場合、
ssh2_connect関数を実行すると下記のようなエラーが出ます。
PHP Fatal error: Call to undefined function ssh2_connect()
実装
$server = "xxx.xxx.xxx.xxx"; $port = "22"; $username = "user"; $password = "password"; // コネクション生成 $connect = ssh2_connect($server, $port); // パスワード認証 if (ssh2_auth_password($connect, $username, $password)) { $sftp = ssh2_sftp($connect); // 出力先を指定 $stream = fopen("ssh2.sftp://{$sftp}/home/hoge/hoge.txt.tmp", 'w'); $file = file_get_contents("/tmp/hoge.txt"); fwrite($stream, $file); fclose($stream); // .tmpを外す ssh2_sftp_rename($sftp,"/foo/bar/hoge.txt.tmp", "/home/hoge/hoge.txt"); ssh2_exec($connect,"exit"); }
だいたいこんな実装になります。
ちなみにパスワード認証ではなく、秘密鍵を使う場合は
ssh2_auth_pubkey_file を使用します。
※認証するには公開鍵・秘密鍵が必要です。
$server = "xxx.xxx.xxx.xxx"; if (ssh2_auth_pubkey_file ($connect, $username, 公開鍵のパス, 秘密鍵のパス)) { $sftp = ssh2_sftp($connect);
0 件のコメント:
コメントを投稿