最終更新:2026-01-11
注意:生成AIにより記事を生成したため、一部情報に偏りや誤りがある可能性があります。自己責任でお読みください。
以前の記事で、scpコマンドの基本的なファイル転送について解説した。
(以前の記事はscpと右上の検索窓に入力してエンターキーを押せば表示される。)
本記事では、システム管理や複雑なネットワーク環境下で必須となる応用的なオプション(帯域制限、3点間転送、踏み台サーバーの利用など)について、その仕組みとセキュリティ上の利点を踏まえて説明する。
応用オプションの詳細
1. 帯域幅の制限(-l)
システム管理者が大容量のファイルを転送する際、ネットワーク帯域を占有して他の業務通信に影響を与えないようにするために使用する。
- 構文:
-l limit - 機能: 転送速度の上限を Kbit/s(キロビット毎秒) 単位で指定する。
使用例: 帯域を 1Mbps (1000 Kbit/s) に制限する場合
scp -l 1000 large_file.tar.gz user@remotehost:~/backup
パケットの送出が制御されるため、ネットワーク負荷は平準化されるが、転送完了までの時間は長くなる。
補足:
-lの数値は Kbit/s(キロビット毎秒, decimal) で指定します。-l 1000は 1000 Kbit/s = 1,000,000 bit/s(=1 Mbps)です。計測時は二進接頭辞(Ki/Mi)と混同しないように注意してください。
2. リモートホスト間の安全な転送(-3)
ローカルホストを経由して、2つのリモートホスト間でファイルを転送するオプションである。
通常、リモートホストAからリモートホストBへ scp を行うと、Aが直接Bへ接続しようとする。しかし、セキュリティポリシーによりサーバー間の直接通信が禁止されている場合(例:DMZ上の踏み台サーバーと、内部ネットワークのDBサーバー間など)は転送が失敗する。
-3オプションを使用すると、データは「リモートA → ローカル → リモートB」という経路で転送されるため、リモートホスト同士が直接通信できなくてもファイルをコピーできる。
構文: -3
メリット: リモートホストAに、リモートホストBの認証情報(秘密鍵など)を置く必要がないため、セキュリティリスクを低減できる。
使用例: 踏み台サーバー(Bastion)上のログを、直接通信できない内部サーバーへ移動する
# 書式: scp -3 user@host1:source user@host2:dest
scp -3 user@bastion:access.log user@internal:/var/log/archive/
※データはローカルPCを経由するため、ローカル側の帯域も消費する点に注意が必要である。
注意:
scp -3を使う場合、ローカル(クライアント)は両方のリモートホストに接続できる認証情報を持っている必要があります(クライアントが A から受け取り B に送信するため)。またデータはローカルの帯域とCPU(暗号化処理)を消費するため、大容量ファイルでは事前に試験転送を推奨します。
3. 踏み台サーバーを経由した接続(-J)
ローカルからターゲットのサーバーへ接続する際、中継地点となる「踏み台サーバー(Bastion/Jump Host)」を経由する場合に使用する。OpenSSH 7.3以降で利用可能。
構文: -J destination
機能: 指定したホストを踏み台として、最終的な転送先へ接続する。
使用例: 踏み台(bastion)を経由して、内部サーバー(target)へファイルを送る
scp -J user@bastion file.txt user@target:~/
これは ssh -J と同様の挙動であり、多段(Bastion1 -> Bastion2 -> Target)の場合はカンマ区切りで指定可能である。
例:
-J [user@]jump[:port]。複数の踏み台を経由する場合はカンマ区切りで指定できます(例:-J jump1,jump2)。
4. 秘密鍵ファイルの指定(-i)
デフォルト(~/.ssh/id_rsa など)以外の秘密鍵を使用して認証を行う場合に指定する。AWSなどのクラウドインスタンスへ接続する際によく利用される。
scp -i /path/to/key.pem data.txt user@remotehost:~
5. IPv4 / IPv6 の強制(-4, -6)
特定のIPプロトコルのみを使用するよう強制する。
scp -4 file.txt user@remotehost:~
6. ポート指定について(-P)
SSHが標準の22番ポート以外で動作している場合は、-P(大文字)でポートを指定する。
scp -P 8080 file.txt user@remotehost:~
余談:
-Pは大文字です(小文字の-pはファイルの属性(パーミッション/タイムスタンプ)を保持するオプションなので注意)。
第三者の視点(ログ分析)
これらのオプションが使用された場合、第三者側やログ分析においては、以下のような特徴が観測される。
帯域制限(-l): 通信量のスパイク(急増)が発生せず、低い通信量が一定時間続く「台地状」のトラフィックパターンとなる。
3点間転送(-3): リモートホスト同士の通信ログ(A→B)は発生せず、代わりに「A→ローカル」と「ローカル→B」の2つの通信フローが観測される。
踏み台経由(-J): 踏み台サーバーのログには、ローカルからの接続とターゲットへの転送(ポートフォワード)の記録が残る。
運用メモ: scp は手軽ですが、要件によっては
sftpやrsync -e ssh、あるいはssh経由でtarをパイプする方法などの方が安全・効率的な場合があります。用途に応じて使い分けてください。
scpは単なるコピーコマンドにとどまらず、-3 や -J を活用することで、複雑なネットワークセキュリティ要件(セグメンテーションや踏み台構成)に柔軟に対応できる強力なツールである。