AzureのLinux VMとのファイル転送をどう通すか|Bastionトンネル・Azure Files・Blobの向き不向き

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Azure > AzureのLinux VMとのファイル転送をどう通すか|Bastionトンネル・Azure Files・Blobの向き不向き
「Azure上のLinux VMにファイルをコピーしたいのに、パブリックIPがなくてSCPが通らない」という状況、Azureを使い始めると意外と早くぶつかります。

オンプレミスであれば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経路の選択基準は「頻度」「容量」「インフラ変更の許容度」で決まる


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
姓・名・メールの3つだけ/30秒/解除は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

「Basic」と出た場合はAzureポータルまたはCLIで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 &

実行すると以下のような出力が出て、ローカルの2222番ポートへの接続がVMのSSHポートに転送されます。

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

向いている用途:設定ファイルやスクリプトのような小~中規模ファイルの単発転送、既存のscp/rsyncワークフローをそのまま流用したい場合に最適です。

注意点:Bastionトンネルセッションは長時間放置すると切断されます。大容量ファイルの転送中にセッションが切れると転送が中断されるため、数GB以上のファイルにはこの方法は向いていません。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、20年以上の運用経験を持つ現役エンジニアが基礎から教えます。
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やmvでファイルを扱えます。

# ファイルを共有フォルダへコピー 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/

AzCopyの強みは、大容量ファイルでも転送が中断した場合に再開(resume)できる点と、cronで定期実行しても認証トークンが切れにくい点です。バックアップの自動化に組み込むときはマネージドIDとの組み合わせが最も運用しやすいです。

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サーバー運用を体系的に学びたい方は、以下もあわせてご覧ください。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、20年以上の運用経験を持つ現役エンジニアが基礎から教えます。
Azure対応セミナーの詳細を見る >>

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。