phpseclibを利用
use phpseclib\Net\SFTP; use physiclib\Crypt\RSA;
接続仕様
$ssh_host = ホスト名 or IPアドレス $ssh_port = ポート番号 $ssh_user_id = ユーザーID $ssh_password = パスワード認証の場合 パスワード $rsa_file_path = 鍵認証の場合 プライベート鍵ファイルへのパス $csv_share_directory = 送信先ディレクトリ
実行
$sftp = new SFTP($ssh_host, $ssh_port);
// password or rsa.
$key = $ssh_password;
if (!$key) {
  $key = new RSA();
  $rsa = file_get_contents($rsa_file_path);
  if (!$rsa) {
    $this->putError(t('rsaファイルが読み込めませんでした。@file', ['@file' => $rsa_file_path]));
  }
  if (empty($this->getError())) {
    $key->loadKey($rsa);
  }
}
// login.
if (empty($this->getError())) {
  if ($sftp->login($ssh_user_id, $key)) {
    // put file.
    $sftp->put("$csv_share_directory/$file", $data);
  }
  else {
    $this->putError(t('SSHログインに失敗しました。'));
  }
}