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 件のコメント:
コメントを投稿