オンプレミスであればsshポートが開いていれば 一発で済む話ですが、Azureの場合はVMをパブリックIPなしで建てるのがセキュリティのベストプラクティスです。そのぶん、ファイルを持ち込む経路を意識して選ぶ必要があります。
この記事では、Azure Linux VMへのファイル転送に使える3つの主要経路(Bastionトンネル+SCP・Azure Files SMBマウント・AzCopyとBlob Storage)を取り上げ、それぞれの仕組みと向き不向きを実例コマンドとともに解説します。
この記事のポイント
・パブリックIPなしVMへの転送はBastionトンネル+SCPが最速で試せる
・常時読み書きが発生するなら Azure Files SMBマウントが便利
・数GBを超える一括転送やバックアップはAzCopy+Blobが最も高速
・3経路の選択基準は「頻度」「容量」「インフラ変更の許容度」で決まる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
Azure Linux VMへのファイル転送で最初にぶつかる壁
Azure環境では、セキュリティの観点からVMにパブリックIPアドレスを割り当てないことが推奨されています。NICに直接パブリックIPを付けると、インターネットに22番ポートが露出するリスクがあるためです。その結果、手元のPCから という直接転送が使えなくなります。代わりに使える経路は大きく3つあります。
・Bastionトンネル+SCP:Azure Bastionをトンネル代わりにして、scp/rsyncをそのまま使う方法
・Azure Files SMBマウント:Azure上にNASのような共有フォルダを作り、VMからマウントして使う方法
・AzCopy+Blob Storage:ストレージアカウントを中継点にして大容量ファイルを非同期で転送する方法
どれが正解かは状況次第です。以下で各経路の手順と向き不向きを順に見ていきます。
方法1|Bastionトンネル経由でSCPコマンドを使う
最も手っ取り早いのがこの方法です。Azure Bastionには「ネイティブクライアントサポート」という機能があり、ローカルポートへのSSHトンネルを張ることができます。そのトンネルを経由してscpやrsyncをそのまま使えます。1. Bastion Standard Tierが必要な理由
ネイティブクライアントサポート(トンネル機能)はBastion Standard Tier以上でしか使えません。Basic Tierでは「Azureポータルからのブラウザ経由SSH」のみで、ローカルクライアントからのトンネル転送は使えないので注意してください。まず現在のBastionのSKUを確認します。
az network bastion show --name myBastion --resource-group myRG --query "sku.name" --output tsv
Standard
2. Bastionトンネルをローカルポートに開く
VMのリソースIDを取得してからトンネルを開きます。# VMのリソースIDを取得する VM_ID= # ローカルの2222番ポートにトンネルを開く(バックグラウンドで実行) az network bastion tunnel --name myBastion --resource-group myRG --target-resource-id "" --resource-port 22 --port 2222 &
Opening tunnel to myLinuxVM... Tunnel is ready, connect via port 2222
3. SCPでファイルを転送する
トンネルが開いたら、 でローカルポートを指定してscpを実行します。転送先はlocalhost(127.0.0.1)です。# ローカルから VMへアップロード scp -P 2222 -i ~/.ssh/id_rsa ./deploy.sh azureuser@127.0.0.1:/home/azureuser/ # VMからローカルへダウンロード scp -P 2222 -i ~/.ssh/id_rsa azureuser@127.0.0.1:/var/log/app.log ./
deploy.sh 100% 2.4 KB 2.3MB/s 00:00
注意点:Bastionトンネルセッションは長時間放置すると切断されます。大容量ファイルの転送中にセッションが切れると転送が中断されるため、数GB以上のファイルにはこの方法は向いていません。
Azure対応セミナーの詳細を見る >>
方法2|Azure FilesをSMBマウントして直接書き込む
Azure Filesはクラウド上のNASのようなサービスです。ストレージアカウント上にファイル共有を作成し、LinuxからSMB(またはNFS)でマウントすることで、ローカルディスクと同じように読み書きできます。1. ストレージアカウントとファイル共有を作成する
# ストレージアカウント作成(名前は全小文字英数字・3~24文字) az storage account create --name mystorageaccount --resource-group myRG --location japaneast --sku Standard_LRS --kind StorageV2 # ファイル共有作成(クォータはGB単位) az storage share-rm create --resource-group myRG --storage-account mystorageaccount --name myshare --quota 100
2. VMからSMBマウントする
Linux VMにSSHまたはBastionポータルでログインし、以下を実行します。# cifsutifsをインストール(Ubuntu/Debian系) sudo apt-get install -y cifs-utils # ストレージアカウントのアクセスキーを取得 STORAGE_KEY= # マウントポイントを作成してマウント sudo mkdir -p /mnt/azure sudo mount -t cifs //mystorageaccount.file.core.windows.net/myshare /mnt/azure -o vers=3.0,username=mystorageaccount,password=,serverino,mfsymlinks
$ df -h /mnt/azure Filesystem Size Used Avail Use% Mounted on //mystorageaccount.file.core.windows.net/myshare 100G 128K 100G 1% /mnt/azure
# ファイルを共有フォルダへコピー cp /var/log/app.log /mnt/azure/logs/
3. 向いている用途と注意点
Azure FilesのSMBマウントが向いているのは、複数のVMから同じファイルを参照・更新する場合や、アプリケーションが設定ファイルを頻繁に読み書きするケースです。また、ローカルPCのAzure Storage Explorerからもファイルを操作できるため、開発チームとの共有にも使いやすいです。注意点としては、SMBはTCPポート445を使うため、ネットワークセキュリティグループ(NSG)で445番が開いていないとマウントできません。クライアント側のファイアウォールでもブロックされている場合があるので、企業ネットワークからの直接接続は確認が必要です。
方法3|AzCopyでBlobストレージへ大容量ファイルを転送する
数GBを超えるファイルの転送や、毎夜のバックアップを自動化したい場合はAzCopyとBlob Storageの組み合わせが最も効率的です。AzCopyはAzureが公式に提供するコマンドラインツールで、マルチスレッドで並列アップロードを行うため転送速度が高速です。1. AzCopyをLinux VMにインストールする
# AzCopyをダウンロードして展開する cd /tmp wget -q https://aka.ms/downloadazcopy-v10-linux -O azcopy.tar.gz tar -xzf azcopy.tar.gz sudo cp ./azcopy_linux_amd64_*/azcopy /usr/local/bin/ sudo chmod +x /usr/local/bin/azcopy # バージョン確認 azcopy --version
azcopy version 10.26.0
2. Azure ADでログインしてアップロードする
SASトークンを使う方法もありますが、VMにマネージドIDが割り当てられている場合はAzure ADログインの方が認証情報をコードに埋め込まずに済むため安全です。# マネージドIDを使ってログイン(キーレス認証) azcopy login --identity # ファイルをBlobコンテナへアップロード azcopy copy /var/backup/db-2026-09-11.tar.gz "https://mystorageaccount.blob.core.windows.net/mycontainer/" # ディレクトリを再帰的にアップロード(--recursive) azcopy copy /var/www/html/ "https://mystorageaccount.blob.core.windows.net/mycontainer/html/" --recursive
INFO: Scanning... INFO: Authenticating to destination using Azure AD Job 8a3f7f0d-e4b2-4c6a-8d41-b8c3f1234567 has started Log file is located at: /home/azureuser/.azcopy/8a3f7f0d.log 100.0 %, 1 Done, 0 Failed, 0 Pending, 0 Skipped, 2.31 GiB, 2-sec Throughput (Mb/s): 89.2 Job 8a3f7f0d-e4b2-4c6a-8d41-b8c3f1234567 summary: Elapsed Time (Minutes): 0.4 Number of File Transfers: 1 Number of Folder Property Transfers: 0 Number of Symlink Transfers: 0 Total Number of Transfers: 1 Number of File Transfers Completed: 1 Number of Failed Transfers: 0 ThroughPut (MB/s): 89.20
3. Blob StorageからVMへダウンロードする
# BlobコンテナからVMのローカルパスへダウンロード azcopy copy "https://mystorageaccount.blob.core.windows.net/mycontainer/db-2026-09-11.tar.gz" /var/restore/
3つの経路、どれを選ぶか
状況別の選択基準を整理します。Bastionトンネル+SCPが向いているケース:
・インフラ変更なしにすぐ試したい(Bastion Standard Tierが既にある)
・小~中規模ファイルの単発転送(数MB~数百MB)
・既存のscpやrsyncのワークフローをAzureに持ち込みたい
Azure Files SMBマウントが向いているケース:
・複数のVMから同じファイルを読み書きしたい
・アプリケーションがファイルを頻繁に参照・更新する(ログ収集、設定共有)
・Windowsクライアントとのファイル共有も必要
AzCopy+Blob Storageが向いているケース:
・数GBを超える大容量ファイルの転送
・毎日の定期バックアップや自動化パイプライン
・転送を途中で止めても再開したい
まとめ
| 経路 | 向いているサイズ | セットアップ工数 | 自動化 |
|---|---|---|---|
| Bastionトンネル+SCP | 小~中(~数百MB) | 低(Bastion Standard必要) | 難しい(セッション維持の問題あり) |
| Azure Files SMBマウント | 小~中、頻繁アクセス向き | 中(ストレージアカウント作成) | fstabで常時マウント可能 |
| AzCopy+Blob Storage | 大容量(GB超)に強い | 中(マネージドID設定を推奨) | cronとの組み合わせが最適 |
「すぐにファイルを1つ送りたい」ならBastionトンネル+SCP、「毎日バックアップを自動で取りたい」ならAzCopy+Blobが最短で結果が出る選択です。Azure Filesは共有ディスクとして継続的に使いたい場合に投資する価値があります。
Azure環境でのLinuxサーバー運用を体系的に学びたい方は、以下もあわせてご覧ください。
Azure対応セミナーの詳細を見る >>
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら
- 前のページへ:AzureのLinux VM作成で使うイメージURNをaz vm image listで調べる方法|Publisher・Offer・SKU・Versionの構造と実践手順
- この記事の属するカテゴリ:Azureへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。
登録無料・いつでも解除できます